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])