📜  Java AWT教程(1)

📅  最后修改于: 2023-12-03 14:42:13.270000             🧑  作者: Mango

Java AWT教程

Java AWT(Abstract Window Toolkit)是Java的图形用户界面(GUI)工具包,用于构建桌面应用程序。AWT提供了一组易于使用的用户界面组件,如按钮、标签、文本框、选择框等,开发人员可以使用它们轻松地构建具有丰富用户界面的应用程序。

AWT组件
组件层次结构

AWT组件继承自java.awt.Component类,可通过继承创建自定义组件。下图显示了AWT组件的层次结构:

AWT组件层次结构

如上图所示,Component是所有AWT组件的基类,Container类是所有容器组件(如Frame、Panel等)的基类。

标签(Label)

标签是用于显示文本或图像的AWT组件。可以使用以下方法设置标签的文本和图像:

public void setText(String text) //设置标签文本
public void setImage(Image img) //设置标签图像
按钮(Button)

按钮是AWT中使用最广泛的组件之一。可以使用以下方法设置按钮的标签和事件处理程序:

public void setLabel(String label) //设置按钮标签
public void addActionListener(ActionListener listener) //设置按钮事件处理程序
文本框(TextField)

文本框用于输入单行文本。可以使用以下方法设置文本框的文本和长度:

public String getText() //获取文本框文本
public void setText(String text) //设置文本框文本
public void setColumns(int columns) //设置文本框长度
选择框(Checkbox)

选择框用于表示二进制状态,如“选中/未选中”之类。可以使用以下方法设置选择框的标签和状态:

public String getLabel() //获取选择框标签
public boolean getState() //获取选择框状态
public void setState(boolean state) //设置选择框状态
列表框(List)

列表框用于显示多个选项,并允许用户从中选择一个或多个选项。可以使用以下方法设置列表框的选项:

public void add(String item) //添加选项
public void remove(String item) //删除选项
public void removeAll() //删除所有选项
布局管理

AWT还支持各种布局管理器,如FlowLayout、BorderLayout、GridLayout等,可以使用它们来精确控制组件的位置和大小。

AWT事件处理

AWT使用Java事件模型来处理事件。以下是常见的AWT事件类型:

  • ActionEvent:由按钮、菜单项等组件引发
  • MouseEvent:由鼠标操作引发,如单击、双击、拖动等
  • KeyEvent:由键盘操作引发,如按下和释放某个键

可以使用以下方法为组件添加事件处理程序:

public void addActionListener(ActionListener listener) //添加动作事件处理程序
public void addMouseListener(MouseListener listener) //添加鼠标事件处理程序
public void addKeyListener(KeyListener listener) //添加键盘事件处理程序

事件处理程序必须实现相应的事件监听器接口,例如ActionListener、MouseListener、KeyListener等。

AWT示例

以下是一个简单的AWT示例程序,其中包含四个文本框和一个按钮,单击按钮将计算文本框中的值并将其添加到第四个文本框中:

import java.awt.*;
import java.awt.event.*;

public class Example {
   private Frame mainFrame;
   private Label headerLabel;
   private Label statusLabel;
   private Panel controlPanel;

   public Example(){
      prepareGUI();
   }

   public static void main(String[] args){
      Example awtControlDemo = new Example();
      awtControlDemo.showEventDemo();
   }

   private void prepareGUI(){
      mainFrame = new Frame("Java AWT示例");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));
      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      headerLabel = new Label();
      headerLabel.setAlignment(Label.CENTER);
      statusLabel = new Label();        
      statusLabel.setAlignment(Label.CENTER);
      statusLabel.setSize(350,100);

      controlPanel = new Panel();
      controlPanel.setLayout(new FlowLayout());

      mainFrame.add(headerLabel);
      mainFrame.add(controlPanel);
      mainFrame.add(statusLabel);
      mainFrame.setVisible(true);  
   }

   private void showEventDemo(){
      headerLabel.setText("控制面板"); 

      Label label1= new Label("文本框1", Label.RIGHT);
      Label label2 = new Label("文本框2", Label.RIGHT);
      Label label3 = new Label("文本框3", Label.RIGHT);
      Label label4 = new Label("文本框4", Label.RIGHT);

      TextField text1 = new TextField(6);
      TextField text2 = new TextField(6);
      TextField text3 = new TextField(6);
      TextField text4 = new TextField(6);

      Button calculateButton = new Button("计算");
      calculateButton.setActionCommand("Calculate");

      calculateButton.addActionListener(new ButtonClickListener());        

      controlPanel.add(label1);
      controlPanel.add(text1);
      controlPanel.add(label2);
      controlPanel.add(text2);
      controlPanel.add(label3);
      controlPanel.add(text3);

      controlPanel.add(calculateButton);
      controlPanel.add(label4);
      controlPanel.add(text4);

      mainFrame.setVisible(true);  
   }

   private class ButtonClickListener implements ActionListener{
      public void actionPerformed(ActionEvent e) {
         String value1 = text1.getText();
         String value2 = text2.getText();
         String value3 = text3.getText();

         int num1 = Integer.parseInt(value1);
         int num2 = Integer.parseInt(value2);
         int num3 = Integer.parseInt(value3);

         int sum = num1 + num2 + num3;
         text4.setText(Integer.toString(sum));
      }
   }
}

以上代码创建了一个Frame,其中包含一个控制面板Panel,以及四个文本框和一个按钮。

参考资料