Java 9 用户界面的图形(GUI)设置
Java提供了多种方式来创建图形用户界面(GUI),其中最常用的是java.awt
和javax.swing
包。java.awt
包提供了基本的GUI组件,而javax.swing
包提供了更高级和灵活的组件。
1 使用 java.awt
包
java.awt
包中的类提供了基本的GUI组件,如按钮、标签和窗口等。以下是一个简单的示例,展示了如何使用java.awt
包创建一个带有按钮的窗口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| package review;
import java.awt.Button; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;
public class SimpleAWTGUI { public static void main(String[] args) { Frame frame = new Frame("Simple AWT GUI"); frame.setSize(300, 200);
Button button = new Button("Click Me"); frame.add(button);
frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); System.out.println("closing"); } });
frame.setVisible(true); } }
|
在Java中,WindowListener
接口提供了多个方法来监听窗口事件。除了windowClosing
方法外,还有以下几个方法:
windowOpened(WindowEvent e)
:当窗口第一次变为可见时调用。
windowClosed(WindowEvent e)
:当窗口被关闭时调用。
windowIconified(WindowEvent e)
:当窗口被最小化(图标化)时调用。
windowDeiconified(WindowEvent e)
:当窗口从最小化状态恢复到正常状态时调用。
windowActivated(WindowEvent e)
:当窗口被激活时调用。
windowDeactivated(WindowEvent e)
:当窗口失去激活状态时调用。
2 使用 javax.swing
包
javax.swing
包提供了更高级和灵活的GUI组件,如JButton、JLabel和JFrame等。以下是一个简单的示例,展示了如何使用javax.swing
包创建一个带有按钮的窗口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| package review;
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel;
public class SimpleSwingGUI { public static void main(String[] args) { JFrame frame = new JFrame("Simple Swing GUI"); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(); frame.add(panel);
JButton button = new JButton("Click Me"); panel.add(button);
frame.setVisible(true); } }
|
3 GUI其它监听器的应用
在Java中,按钮事件主要通过ActionListener
接口来处理。ActionListener
接口只有一个方法actionPerformed
,当按钮被点击时会调用这个方法。以下是一个简单的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
public class ButtonExample { public static void main(String[] args) { JFrame frame = new JFrame("Button Example"); JButton button = new JButton("Click Me");
button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Button clicked!"); } });
frame.add(button); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
|
除了ActionListener
,还有其他一些与按钮相关的事件监听器:
MouseListener
:用于监听鼠标事件,包括鼠标点击、进入、离开等。
mouseClicked(MouseEvent e)
:鼠标点击按钮时调用。
mouseEntered(MouseEvent e)
:鼠标进入按钮区域时调用。
mouseExited(MouseEvent e)
:鼠标离开按钮区域时调用。
mousePressed(MouseEvent e)
:鼠标按下按钮时调用。
mouseReleased(MouseEvent e)
:鼠标释放按钮时调用。
KeyListener
:用于监听键盘事件,包括按键按下、释放和键入。
keyPressed(KeyEvent e)
:按键按下时调用。
keyReleased(KeyEvent e)
:按键释放时调用。
keyTyped(KeyEvent e)
:按键键入时调用。
FocusListener
:用于监听焦点事件,包括按钮获得焦点和失去焦点。
focusGained(FocusEvent e)
:按钮获得焦点时调用。
focusLost(FocusEvent e)
:按钮失去焦点时调用。
以下是一个结合了MouseListener
和KeyListener
的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| import javax.swing.*; import java.awt.event.*;
public class ButtonEventsExample { public static void main(String[] args) { JFrame frame = new JFrame("Button Events Example"); JButton button = new JButton("Click or Press Me");
button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Button clicked!"); } });
button.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { System.out.println("Mouse clicked on button"); }
@Override public void mouseEntered(MouseEvent e) { System.out.println("Mouse entered button"); }
@Override public void mouseExited(MouseEvent e) { System.out.println("Mouse exited button"); } });
button.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { System.out.println("Key pressed: " + e.getKeyChar()); }
@Override public void keyReleased(KeyEvent e) { System.out.println("Key released: " + e.getKeyChar()); } });
frame.add(button); frame.setSize(300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
|
这些事件监听器可以根据需要进行组合使用,以实现对按钮事件的全面处理。