Java GUI 不会显示我想要的提示

标签 java swing user-interface jframe

所以我的程序被设计为接收 2 个值,进行计算,并给出该计算值。我想在单击按钮后将其显示为 GUI 中 actionPerformed 部分的提示。看起来应该会出现,但我似乎找不到为什么不出现?未显示的是“prompt2”。谢谢

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Windchill extends JFrame implements ActionListener{
    private static final int FRAME_WIDTH = 300;
    private static final int FRAME_HEIGHT = 200;
    private static final int FRAME_X_ORIGIN = 150;
    private static final int FRAME_Y_ORIGIN = 250;
    private String degree;
    private String wind;
    private int degreeInt;
    private int windInt;
    private double windChillInt;
    private JButton windButton;
    private JLabel prompt;
    private JLabel prompt1;
    private JLabel prompt2;
    private JTextField inputLine;
    private JTextField inputLine1;

    public Windchill(){
        setTitle("Windchill");
        setSize(FRAME_WIDTH, FRAME_HEIGHT);
        setLocation(FRAME_X_ORIGIN, FRAME_Y_ORIGIN);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container contentPane = getContentPane();
        contentPane.setLayout(new FlowLayout());    
        inputLine = new JTextField();
        inputLine.setColumns(3);
        inputLine.addActionListener(this);
        contentPane.add(inputLine);
        prompt = new JLabel();
        prompt.setText("Enter the degrees in Farienheight       ");
        prompt.setSize(150,25);
        contentPane.add(prompt);
        inputLine1 = new JTextField();
        inputLine1.setColumns(3);
        inputLine1.addActionListener(this);
        contentPane.add(inputLine1);

        prompt1 = new JLabel();
        prompt1.setText("Enter the wind speed in MPH");
        prompt1.setSize(150,25);
        contentPane.add(prompt1);

        windButton = new JButton("Calculate windchill");
        contentPane.add(windButton);
        windButton.addActionListener(this);


    }
    public void actionPerformed(ActionEvent event){
        if (event.getSource() instanceof JButton){
            JButton clickedButton = (JButton) event.getSource();
            if (clickedButton == windButton){
                degree = inputLine.getText();
                degreeInt = Integer.parseInt(degree);
                wind = inputLine1.getText();
                windInt = Integer.parseInt(wind);
                windChillInt = 0.08 * (degreeInt - 91.4)*(3.71* (Math.sqrt(windInt)) + 5.81 - 0.25 *windInt) + 91.4;

                prompt2 = new JLabel();
                prompt2.setText("The windchill is " + windChillInt);
                prompt2.setSize(150,25);
                Container contentPane = getContentPane();
                contentPane.setLayout(new FlowLayout());
                contentPane.add(prompt2);
            }

        }
    }
    public static void main(String[] args) {
        Windchill frame;
        frame = new Windchill();
        frame.setVisible(true);
    }
}

最佳答案

prompt2 未显示,因为需要验证 Swing 容器,以便任何新添加的组件可见。重新绘制也是一个很好的做法。你可以这样做:

contentPane.revalidate();
contentPane.repaint();
<小时/>

旁注:

  • 无需为您的 ActionListener 再次设置布局
  • contentPane.add(prompt2) 可以简化为 add(prompt2)
  • 或者,您可以在启动时使用空 prompt2 JLabel 添加到 contentPane String内容并调用setText更新。

关于Java GUI 不会显示我想要的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15466031/

相关文章:

java - Spring4 hibernate 配置

java - 使用 java.net.URLConnection 获取 html 中的数据仅获取 html 代码而不是实际数据

java - 如何在JPanel上拖拽画线?

c++ - Qt 工具窗口可在 Mac 上调整大小

java - 难以理解 <? Java 中扩展 T> 通配符

java - 适用于小屏幕设备的 Android 模拟器

java - JProgressBar 在进程完成之前不会更新

Java GUI 线程

异步任务中的 C# 更改标签文本

Mac/Linux 和 Windows 上的 Ruby GUI 开发