0

所以我的程序设计为接受 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);
    }
}
4

1 回答 1

1

prompt2没有出现,因为Swing需要验证容器才能看到任何新添加的组件。也是一个好习惯repaint。你可以这样做:

contentPane.revalidate();
contentPane.repaint();

旁注:

  • 无需为您的ActionListener
  • contentPane.add(prompt2)可以简化为add(prompt2)
  • 或者,您可以使用空内容将其添加prompt2 JLabelcontentPane启动时String并调用setText更新。
于 2013-03-17T20:52:42.523 回答