 
        
        Lec_05
.pdf 
Модель обработки событий
Register Listener
| Event Source | Event Listener | 
Send Notification
User Action
Event Object
 
События
 
Слушатели
•Список типов слушателей http://docs.oracle.com/javase/tutorial/uiswing/events/api.html
| Listener Interface | Adapter Class | Listener Methods | |
| 
 | 
 | 
 | |
| ActionListener | none | actionPerformed(ActionEvent) | |
| 
 | 
 | 
 | |
| 
 | 
 | keyPressed(KeyEvent) | |
| KeyListener | KeyAdapter | keyReleased(KeyEvent) | |
| 
 | 
 | keyTyped(KeyEvent) | |
| 
 | 
 | 
 | |
| 
 | 
 | mouseClicked(MouseEvent) | |
| 
 | MouseAdapter, | mouseEntered(MouseEvent) | |
| MouseListener | mouseExited(MouseEvent) | ||
| MouseInputAdapter | |||
| 
 | mousePressed(MouseEvent) | ||
| 
 | 
 | ||
| 
 | 
 | mouseReleased(MouseEvent) | |
| 
 | 
 | 
 | |
| 
 | 
 | windowActivated(WindowEvent) | |
| 
 | 
 | windowClosed(WindowEvent) | |
| 
 | 
 | windowClosing(WindowEvent) | |
| WindowListener | WindowAdapter | windowDeactivated(WindowEvent) | |
| 
 | 
 | windowDeiconified(WindowEvent) | |
| 
 | 
 | windowIconified(WindowEvent) | |
| 
 | 
 | windowOpened(WindowEvent) | |
| 
 | 
 | 
 | 
 
Пример обработки событий: Beeper
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Beeper extends JPanel implements ActionListener {
public Beeper() {
super(new BorderLayout());
JButton button = new JButton("Click Me"); button.setPreferredSize(new Dimension(200, 80)); add(button, BorderLayout.CENTER); button.addActionListener(this);
}
public void actionPerformed(ActionEvent e) { Toolkit.getDefaultToolkit().beep(); } private static void createAndShowGUI() {
JFrame frame = new JFrame("Beeper"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(new Beeper());
frame.pack(); frame.setVisible(true);
| } | Полный пример можно взять здесь | |
| http://docs.oracle.com/javase/tutorial/uiswing/ | ||
| public static void main(String[] args) { … } | ||
| examples/events/BeeperProject/src/events/Bee | ||
| } | per.java | 
 
Пример обработки событий: Beeper 2
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Beeper extends JFrame {
public Beeper(String name) { super(name); } private static void createAndShowGUI() { Beeper frame = new Beeper("Beeper 2");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); button.setPreferredSize(new Dimension(200, 80)); button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) { Toolkit.getDefaultToolkit().beep();
}
});
frame.getContentPane().add(button, BorderLayout.CENTER); frame.pack(); frame.setVisible(true);
}
public static void main(String[] args) { … }
}
Swing: Look and Feel
import javax.swing.UIManager;
public class LookAndFellsWeHave { public static void main(String[] args) {
for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) System.out.println(info);
}
}
1.Metal javax.swing.plaf.metal.MetalLookAndFeel
2.Nimbus com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
3.CDE/Motif com.sun.java.swing.plaf.motif.MotifLookAndFeel
4.Windows com.sun.java.swing.plaf.windows.WindowsLookAndFeel
5.Windows Classic com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
 
Примеры Look and Feel из Demo
•Изменение Look and Fell
•SwingSet2
•SwingSet3 http://download.java.net/javadesktop/swingset3/SwingSet3.jnlp
•Изменение темы
•Metalworks
•Изменение размеров
•Laffy http://download.java.net/javadesktop/laffy/Laffy.jnlp
Swing: Look and Feel
import javax.swing.UIManager;
public class LookAndFellsWeHave { public static void main(String[] args) {
UIManager.LookAndFeelInfo[] lfis = UIManager.getInstalledLookAndFeels(); for (UIManager.LookAndFeelInfo lfi: lfis)
System.out.println(lfi);
}
}
1.Metal javax.swing.plaf.metal.MetalLookAndFeel
2.Nimbus com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
3.CDE/Motif com.sun.java.swing.plaf.motif.MotifLookAndFeel
4.Windows com.sun.java.swing.plaf.windows.WindowsLookAndFeel
5.Windows Classic com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
Swing: Look and Feel
public static void main(String[] args) {
…
try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); }
catch (Exception e) { e.printStackTrace(); }
…
}
public void actionPerformed(ActionEvent evt) {
LookAndFeel currentLookAndFeel = UIManager.getLookAndFeel(); try {
if (currentLookAndFeel.isNativeLookAndFeel()) UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
else
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } SwingUtilities.updateComponentTreeUI(this); this.pack();
}
}
Swing: MetalLookAndFeel и темы
public static void main(String[] args) { try {
MetalLookAndFeel.setCurrentTheme(new javax.swing.plaf.metal.OceanTheme ()); UIManager.setLookAndFeel(new MetalLookAndFeel());
}
catch (Exception e) { e.printStackTrace(); }
}
class MyTheme extends DefaultMetalTheme { public String getName() {
return "MyTheme";
}
private final FontUIResource controlTextFont =
new FontUIResource("Comic Sans MS", Font.PLAIN, 36); public FontUIResource getControlTextFont() {
return controlTextFont ;
}
}
