21xrx.com
2024-12-23 02:28:42 Monday
登录
文章检索 我的文章 写文章
Java图形界面编程实例:打造一个简单的图形计算器
2023-06-11 14:26:23 深夜i     --     --
Java 图形界面编程 Swing框架 计算器

对于许多程序员而言,图形界面编程一直是个令人望而却步、感到困难的地方。但实际上,在学习一些基础的图形界面编程知识之后,我们可以轻松地打造出许多实用的应用程序。本文将以一个简单的图形计算器为例,介绍一些Java图形界面编程的实际应用。

首先,我们需要使用Java中提供的Swing框架。下面是一个基本的Swing框架结构示例代码:


import javax.swing.*;

public class MyFrame extends JFrame {

  public MyFrame() {

    setTitle("Java图形计算器");

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setSize(400, 400);

    setLocationRelativeTo(null);

    setVisible(true);

  }

  public static void main(String[] args) {

    MyFrame frame = new MyFrame();

  }

}

在这段代码中,我们定义了一个继承自JFrame的MyFrame类,其中的构造函数设置了窗口的标题、关闭操作、窗口大小和位置、以及可见性。在main函数中,我们创建了一个MyFrame类的实例,并将其显示出来。

接下来,我们需要添加一些用于计算的组件。在这个例子中,我们需要添加一些按钮和文本框。Swing框架中提供了一系列的组件,我们可以通过调用构造函数来创建它们:


JButton addButton = new JButton("+");

JButton subButton = new JButton("-");

JButton mulButton = new JButton("*");

JButton divButton = new JButton("/");

JTextField num1Field = new JTextField(10);

JTextField num2Field = new JTextField(10);

JTextField resultField = new JTextField(10);

在这里,我们创建了4个按钮(加、减、乘、除),以及3个文本框(用于输入两个数字和展示计算结果)。其中JTextField的参数表示文本框的宽度。

接着,我们需要将这些组件添加到窗口中。Swing组件通常需要添加到一个容器中,如JPanel或JFrame。我们可以使用setLayout()方法来设置容器的布局方式:


JPanel panel = new JPanel();

panel.setLayout(new GridLayout(4, 2));

panel.add(new JLabel("Number 1:"));

panel.add(num1Field);

panel.add(new JLabel("Number 2:"));

panel.add(num2Field);

panel.add(new JLabel("Result:"));

panel.add(resultField);

panel.add(addButton);

panel.add(subButton);

panel.add(mulButton);

panel.add(divButton);

add(panel);

这段代码中,我们创建了一个JPanel容器(注意:一个Swing框架中可以有多个JPanel容器),并设置了GridLayout布局,表示组件将排列为4行2列的网格。接着,我们添加了两个文本标签和三个文本框,并按照顺序添加到GridLayout容器中。最后,我们添加了四个按钮并添加到JPanel容器中,最终将这个JPanel容器添加到我们之前定义的MyFrame窗口中。

最后,我们需要给计算器的每个操作添加事件监听器,以完成实际的计算,并将结果显示在文本框中。在这个例子中,我们使用Java中的Lambda表达式来简化代码:


addButton.addActionListener(e -> calculate('+'));

subButton.addActionListener(e -> calculate('-'));

mulButton.addActionListener(e -> calculate('*'));

divButton.addActionListener(e -> calculate('/'));

private void calculate(char op) {

  double num1 = Double.parseDouble(num1Field.getText());

  double num2 = Double.parseDouble(num2Field.getText());

  double result = 0;

  switch (op) {

    case '+':

      result = num1 + num2;

      break;

    case '-':

      result = num1 - num2;

      break;

    case '*':

      result = num1 * num2;

      break;

    case '/':

      result = num1 / num2;

      break;

  }

  resultField.setText(Double.toString(result));

}

这段代码中,我们为每个按钮对象添加了一个用Lambda表达式定义的ActionListener监听器,并在监听器中调用calculate()函数,以完成实际的计算。这个函数中,我们通过JTextField的getText()方法来获取用户输入的数字,并使用Java中的switch语句根据不同操作符来进行不同的计算。最后,我们使用setText()方法将计算结果设置到结果文本框中。

  
  
下一篇: 作为一名玩家

评论区

{{item['qq_nickname']}}
()
回复
回复