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

时间:2013-03-17 20:47:04

标签: java swing user-interface jframe

所以我的程序设计为接受2个值,进行计算,并给出这个计算值。我想在单击按钮后在actionPerformed部分的GUI中将其显示为提示。它看起来应该出现,但我似乎无法找到它为什么不是?没有出现的是“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);
    }
}

1 个答案:

答案 0 :(得分:1)

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

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

附注:

  • 无需再次为ActionListener
  • 设置布局
  • contentPane.add(prompt2)可简化为add(prompt2)
  • 或者,您可以在启动时将prompt2 JLabel添加到contentPane,其中包含空String内容并致电{{1}更新。