Uploaded by Garick Jay

Лекция Создание простого оконного приложения(GUI)

advertisement
Swing
Простое приложение
Рассмотрим простейшее Swing-приложение.
import javax.swing.*;
public class Simple
{
public static void main (String [] args) {
JFrame myWindow = new JFrame("Пробное окно");
myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myWindow.setSize(400, 300);
myWindow.setVisible(true);
}
}
Контейнеры верхнего уровня
Все swing-программы должны включать в себя Контейнеры
первого уровня




JFrame
JApplet
JWindow
JDialog
Эти контейнеры находятся на вершине иерархии контейнеров и
содержат в себе другие, ‘’легковесные’’ контейнеры и элементы
управления. Разница между JFrame и JWindow может быть
показана на следующем примере:
import javax.swing.*;
public class Simple
{
public static void main (String [] args) {
JFrame win1 = new JFrame("JFrame");
win1.setSize(400, 300);
win1.setLocation(10,10);
JWindow win2 = new JWindow();
win2.setSize(200,300);
win2.setLocation(500,200);
win1.setVisible(true);
win2.setVisible(true);
}
}
Окно JFrame, в отличие от JWindow обладает заголовком,
кнопками управления.
Обработка событий
События
Рассмотрим пример с обработкой события:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Simple
{
public static void main (String [] args) {
JFrame myWindow = new JFrame("Пробное окно");
myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myWindow.setSize(400, 300);
myWindow.setLayout(new FlowLayout());
JButton btn1 = new JButton("Привет!");
JButton btn2 = new JButton("Пока!");
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JOptionPane.showMessageDialog(null,"Привет","Нажато",
JOptionPane.WARNING_MESSAGE);
}
});
myWindow.add(btn1);
myWindow.add(btn2);
myWindow.setVisible(true);
}
}
Для размещения кнопок в окне приложения мы должны
использовать менеджеры компоновки:

BorderLayout

FlowLayout
GridLayout
GridBagLayout
BoxLayout
CardLayout
GroupLayout
SpringLayout






Обзор компонентов
Button
Класс JButton
JButton btn = new JButton("Title");
JButton(Icon);
JButton(String);
JButton(String,Icon);
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = ButtonDemo.class.getResource(path);
return new ImageIcon(imgURL);
}
..
ImageIcon ic = createImageIcon("images/icon1.gif");
JButton btn1 = new JButton(ic);
..
TextField
JTextField(int cols);
JTextField(String str,int cols);
JTextField(String str);
textfield.addActionListener(this);
..
public void actionPerformed(ActionEvent evt) {
String text=textfield.getText();
..
textfield.setText("Новый текст");
..
}
Password
..
private static String OK = "ok";
..
passfield = new JPasswordField(10);
passfield.setActionCommand(OK);
passfield.setActionListener(this);
..
btn.setActionCommand(OK);
..
public void setActionPerformed(ActionEvent evt) {
String cmd = ebv.getActionCommand();
if(OK.equals(cmd)) {
char[] pass=passfield.getPassword();
..
}
}
TextArea
text = new JTextArea();
..
text.setColumns(20);
text.setLineWrap(true);
text.setRows(5);
text.setEditable(true);
..
text.getText();
text.setText("...");
..
CheckBox
check = new JCheckBox("Photo");
check.setSelected(true);
..
check.addItemListener(new ItemListener() {
public void itemStateChanged(ItemIvent e) {
if(check.isSelected())...
}
}
RadioButton
private static String RED="Red";
private static String BLUE="Blue";
..
rbColorRed = new JRadioButton(RED);
rbColorBlue = new JRadioButton(BLUE);
rbColorRed.setActionCommand(RED);
rbColorBlue.setActionCommand(BLUE);
rbColorRed.setSelected(true);
..
ButtonGroup group = new ButtonGroup();
group.add(rbColorRed);
group.add(rbColorBlue);
..
rbColorRed.addActionListener(this);
rbColorBlue.addActionListener(this);
..
public void actionPerformed(ActionEvent e) {
picture.setIcon(new ImageIcon("images/"
+ e.getActionCommand()
+ ".gif"));
}
Dialogs
MessageBox
import javax.swing.JOptionPane
public class ClassNameHere {
public static void infoBox(String infoMessage, String titleBar) {
JOptionPane.showMessageDialog(null, infoMessage,
"InfoBox: " + titleBar,
JOptionPane.INFORMATION_MESSAGE);
}
}
Варианты:




JOptionPane.PLAIN_MESSAGE
JOptionPane.INFORMATION_MESSAGE
JOptionPane.WARNING_MESSAGE
JOptionPane.ERROR_MESSAGE
//Custom button text
Object[] options = {"Yes, please",
"No, thanks",
"No eggs, no ham!"};
int n = JOptionPane.showOptionDialog(frame,
"Would you like some green eggs to go "
+ "with that ham?",
"A Silly Question",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,
options[2])
Download