期末复习-代码题(Java)

1.编写一个程序:创建如下图所示界面,实现计算浮力、清空功能。

  注:F浮=ρgv排 。

b84c88746ccd4ac7bbccfbfb842579c4.png

代码:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BuoyancyCalculator extends JFrame {
private JTextField densityField;
private JTextField gravityField;
private JTextField volumeField;
private JTextField buoyancyField;
public BuoyancyCalculator() {
setTitle("计算浮力");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(null);
JLabel densityLabel = new JLabel("密度");
densityLabel.setBounds(30, 20, 50, 25);
add(densityLabel);
densityField = new JTextField();
densityField.setBounds(100, 20, 150, 25);
add(densityField);
JLabel gravityLabel = new JLabel("g");
gravityLabel.setBounds(30, 50, 50, 25);
add(gravityLabel);
gravityField = new JTextField();
gravityField.setBounds(100, 50, 150, 25);
add(gravityField);
JLabel volumeLabel = new JLabel("V 排");
volumeLabel.setBounds(30, 80, 50, 25);
add(volumeLabel);
volumeField = new JTextField();
volumeField.setBounds(100, 80, 150, 25);
add(volumeField);
JLabel buoyancyLabel = new JLabel("浮力");
buoyancyLabel.setBounds(30, 110, 50, 25);
add(buoyancyLabel);
buoyancyField = new JTextField();
buoyancyField.setBounds(100, 110, 150, 25);
buoyancyField.setEditable(false);
add(buoyancyField);
JButton calculateButton = new JButton("计算");
calculateButton.setBounds(100, 140, 80, 25);
add(calculateButton);
calculateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
calculateBuoyancy();
}
});
}
private void calculateBuoyancy() {
try {
double density = Double.parseDouble(densityField.getText());
double gravity = Double.parseDouble(gravityField.getText());
double volume = Double.parseDouble(volumeField.getText());
double buoyancy = density * gravity * volume;
buoyancyField.setText(String.valueOf(buoyancy));
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(this, " 请 输 入 有 效 的 数 字 ", " 错 误 ", JOptionPane.ERROR_MESSAGE);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new BuoyancyCalculator().setVisible(true);
}
});
}
}

运行结果:

870a6234c03f1c0a3604050b5fb0dcea.png



2.设计一个简单的压强计算器界面。公式:p=ρgh

第一种:g不固定

代码: 

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

// 定义压力计算器类,继承自JFrame表示它是一个窗口应用程序
public class PressureCalculator extends JFrame {

    // 声明用于用户输入和显示的文本框组件
    private JTextField densityField;
    private JTextField gravityField;
    private JTextField heightField;
    private JTextField pressureField;

    // 构造函数,用于初始化界面和组件
    public PressureCalculator() {
        setTitle("压力计算器");  // 设置窗口标题
        setSize(300, 200);  // 设置窗口大小
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置默认的关闭操作为退出程序
        setLocationRelativeTo(null);  // 将窗口位置设置为屏幕中央
        setLayout(null);  // 使用空布局管理器,允许手动设置组件位置

        // 创建标签和文本框组件,用于输入密度、重力加速度、高度和显示压力
        // 设置它们的位置和大小,并将它们添加到窗口中
        JLabel densityLabel = new JLabel("密度 ρ");
        densityLabel.setBounds(30, 20, 80, 25);  // 设置标签位置和大小
        add(densityLabel);  // 将标签添加到窗口中

        densityField = new JTextField();
        densityField.setBounds(120, 20, 150, 25);  // 设置文本框位置和大小
        add(densityField);  // 将文本框添加到窗口中

        JLabel gravityLabel = new JLabel("重力加速度 g");
        gravityLabel.setBounds(30, 50, 80, 25);
        add(gravityLabel);

        gravityField = new JTextField();
        gravityField.setBounds(120, 50, 150, 25);
        add(gravityField);

        JLabel heightLabel = new JLabel("高度 h");
        heightLabel.setBounds(30, 80, 80, 25);
        add(heightLabel);

        heightField = new JTextField();
        heightField.setBounds(120, 80, 150, 25);
        add(heightField);

        JLabel pressureLabel = new JLabel("压力 P");
        pressureLabel.setBounds(30, 110, 80, 25);
        add(pressureLabel);

        pressureField = new JTextField();
        pressureField.setBounds(120, 110, 150, 25);
        pressureField.setEditable(false);  // 设置压力文本框为不可编辑状态
        add(pressureField);

        JButton calculateButton = new JButton("计算");
        calculateButton.setBounds(120, 140, 80, 25);  // 设置按钮位置和大小
        add(calculateButton);

        // 添加按钮的点击事件监听器
        calculateButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                calculatePressure();  // 当按钮点击时调用计算压力的方法
            }
        });
    }

    // 计算压力的方法
    private void calculatePressure() {
        try {
            // 从文本框中获取用户输入的密度、重力加速度和高度
            double density = Double.parseDouble(densityField.getText());
            double gravity = Double.parseDouble(gravityField.getText());
            double height = Double.parseDouble(heightField.getText());

            // 计算压力 P = ρ * g * h
            double pressure = density * gravity * height;

            // 将计算得到的压力值显示在压力文本框中
            pressureField.setText(String.valueOf(pressure));
        } catch (NumberFormatException ex) {
            // 如果用户输入的不是有效的数字,则弹出错误消息框
            JOptionPane.showMessageDialog(this, "请输入有效的数字", "错误", JOptionPane.ERROR_MESSAGE);
        }
    }

    // 主方法,程序入口
    public static void main(String[] args) {
        // 使用SwingUtilities.invokeLater()确保在事件分发线程上创建和显示窗口
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new PressureCalculator().setVisible(true);  // 创建并显示压力计算器界面
            }
        });
    }
}

 

运行结果:

1d9bf5fb3f3139aae06ada88b8c790e1.png

 

第二种:已知 g=10

代码:

//导入了必要的Swing组件和事件处理类。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

// 定义压强计算器类,继承自JFrame表示它是一个窗口应用程序
public class PressureCalculator extends JFrame {

    // 声明用于用户输入和显示的文本框组件
    private JTextField densityField;     // 密度输入文本框
    private JTextField gravityField;     // 重力加速度输入文本框
    private JTextField heightField;      // 高度输入文本框
    private JTextField pressureField;    // 显示压力的文本框

    // 构造函数,用于初始化界面和组件
    public PressureCalculator() {
        setTitle("压力计算器");  // 设置窗口标题
        setSize(300, 200);  // 设置窗口大小
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置默认的关闭操作为退出程序
        setLocationRelativeTo(null);  // 将窗口位置设置为屏幕中央
        setLayout(null);  // 使用空布局管理器,允许手动设置组件位置

        // 创建标签和文本框组件,用于输入密度、重力加速度、高度和显示压力
        // 设置它们的位置和大小,并将它们添加到窗口中
        JLabel densityLabel = new JLabel("密度 ρ");
        densityLabel.setBounds(30, 20, 80, 25);  // setBounds 用于设置标签的位置和大小
        add(densityLabel);  // 将标签添加到窗口中

        densityField = new JTextField();
        densityField.setBounds(120, 20, 150, 25);  // 设置文本框位置和大小
        add(densityField);  // 将文本框添加到窗口中

        JLabel gravityLabel = new JLabel("重力加速度 g");
        gravityLabel.setBounds(30, 50, 80, 25);
        add(gravityLabel);

        // 设置重力加速度文本框,并设定默认值为10
        gravityField = new JTextField("10"); 
        gravityField.setBounds(120, 50, 150, 25);
        gravityField.setEditable(false);  // 设为不可编辑,因为是固定值
        add(gravityField);

        JLabel heightLabel = new JLabel("高度 h");
        heightLabel.setBounds(30, 80, 80, 25);
        add(heightLabel);

        heightField = new JTextField();
        heightField.setBounds(120, 80, 150, 25);
        add(heightField);

        JLabel pressureLabel = new JLabel("压力 P");
        pressureLabel.setBounds(30, 110, 80, 25);
        add(pressureLabel);

        pressureField = new JTextField();
        pressureField.setBounds(120, 110, 150, 25);
        pressureField.setEditable(false);  // 设为不可编辑,仅用于显示计算结果
        add(pressureField);

        JButton calculateButton = new JButton("计算");
        calculateButton.setBounds(120, 140, 80, 25);  // 设置按钮位置和大小
        add(calculateButton);

        // 添加按钮的点击事件监听器
        calculateButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                calculatePressure();  // 当按钮点击时调用计算压力的方法
            }
        });
    }

    // 计算压力的方法
    private void calculatePressure() {
        try {
            // 从文本框中获取用户输入的密度、重力加速度和高度
            double density = Double.parseDouble(densityField.getText());//parseDouble 方法用于将一个表示数字的字符串转换为对应的 double 类型数值。
            double gravity = Double.parseDouble(gravityField.getText()); // 直接使用文本框中的值
            double height = Double.parseDouble(heightField.getText());

            // 计算压力 P = ρ * g * h
            double pressure = density * gravity * height;

            // 将计算得到的压力值显示在压力文本框中
            pressureField.setText(String.valueOf(pressure));
        } catch (NumberFormatException ex) {
            // 如果用户输入的不是有效的数字,则弹出错误消息框
            JOptionPane.showMessageDialog(this, "请输入有效的数字", "错误", JOptionPane.ERROR_MESSAGE);
        }
    }

    // 主方法,程序入口
    public static void main(String[] args) {
        // 使用SwingUtilities.invokeLater()确保在事件分发线程上创建和显示窗口
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new PressureCalculator().setVisible(true);  // 创建并显示压力计算器界面
            }
        });
    }
}

运行结果:

66ef3f9077d6092195ec44f96a175d62.png

1.窗口设置:


1. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

这行代码设置窗口关闭的操作。JFrame.EXIT_ON_CLOSE 表示当用户关闭窗口时,应用程序将退出并终止。这是一个常见的设置,用于确保在用户关闭窗口时应用程序可以正确地退出。


2.setLocationRelativeTo(null);

这行代码将窗口的位置设置为相对于屏幕的中心。传递 null 参数告诉窗口在屏幕中心显示。这样设置可以确保应用程序启动时窗口会出现在屏幕中央,而不是默认的某个固定位置。


3.setLayout(null); // 使用空布局管理器

这行代码设置窗口的布局管理器为 null,即空布局管理器。在空布局管理器下,所有组件的位置和大小需要手动设置。这种方式可以让开发者完全控制组件的位置和布局,适合于一些简单且位置固定的界面设计。但是,它也需要开发者自行处理组件的重叠和调整大小等问题,因此在大多数情况下,推荐使用更灵活的布局管理器来自动处理组件的布局。

2.创建标签和文本框组件,用于输入密度、重力加速度、高度和显示压力

2.1  密度标签与文本框:

//密度标签与文本框

JLabel densityLabel = new JLabel("密度 ρ");
densityLabel.setBounds(30, 20, 80, 25);
add(densityLabel);

densityField = new JTextField();
densityField.setBounds(120, 20, 150, 25);
add(densityField);


1. JLabel densityLabel = new JLabel("密度 ρ");
   这一行创建了一个标签对象 densityLabel,并设置显示的文本为 "密度 ρ"。标签用于在界面上显示静态 
   文本信息。

2. densityLabel.setBounds(30, 20, 80, 25);
   这行代码设置了标签在界面上的位置和大小。具体来说,标签位于 (30, 20) 坐标处,宽度为 80 像素, 
   高度为 25 像素。这些参数依次表示 x 坐标、y 坐标、宽度和高度。


3. add(densityLabel);:
   将 densityLabel 标签添加到当前的 GUI 窗口或容器中。这样做可以将标签显示在用户界面上。


4. densityField = new JTextField();
   这行代码创建了一个文本框对象 densityField,用于用户输入或显示文本信息。


5. .setBounds(120, 140, 80, 25): 这是 JButton 类中的方法,用于设置按钮的位置和大小。

    120: 表示按钮的 x 坐标位置。在窗口中,坐标从左上角开始计算,横向向右增加。
    140: 表示按钮的 y 坐标位置。同样,从窗口的左上角开始计算,纵向向下增加。
    80: 表示按钮的宽度,单位是像素。
    25: 表示按钮的高度,单位是像素。


6. add(densityField);
   将 densityField 文本框添加到当前的 GUI 窗口或容器中,使其在界面上可见。


这段代码的作用是在图形用户界面中创建一个标签和一个文本框,用于显示和输入密度相关的信息。标签显示静态文本 "密度 ρ",而文本框用于用户输入或显示与密度相关的数值。这种界面设计通常用于用户输入数据、进行计算或展示信息的简单应用程序中。

2.2  计算按钮

JButton calculateButton = new JButton("计算");
calculateButton.setBounds(120, 140, 80, 25);
add(calculateButton);

这部分代码创建了一个按钮对象 calculateButton,并设置按钮的文本为 "计算",并将按钮添加到当前的 GUI 窗口或容器中。按钮位于 (120, 140) 坐标处,宽度为 80 像素,高度为 25 像素。

calculateButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        calculatePressure();  // 当按钮点击时调用计算压力的方法
    }
});
  • calculateButton.addActionListener(...)这行代码添加了一个事件监听器,用于监听 calculateButton 按钮的点击事件。
  • new ActionListener() { ... }通过创建一个匿名内部类实现 ActionListener 接口,重写其 actionPerformed 方法。这种方式允许在按钮点击时定义具体的操作。
  • public void actionPerformed(ActionEvent e)这是 ActionListener 接口中定义的方法,当按钮被点击时,Java 运行时会调用这个方法。

2.3  计算压强

  1. setText(String.valueOf(pressure)) 方法

    • setText 是用于设置文本框内容的方法,通常用于将文本框显示的内容更新为指定的文本。
    • String.valueOf(pressure) 将 pressure 变量的值转换为字符串形式。这样做的目的是确保文本框显示的内容是字符串类型,因为 setText 方法接受的参数必须是字符串。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值