0

したがって、私のプログラムは 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);
    }
}
4

1 に答える 1

1

prompt2Swing新しく追加されたコンポーネントを表示できるようにコンテナを検証する必要があるため、表示されません。また、良い習慣repaintです。あなたがすることができます:

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

補足:

  • レイアウトを再設定する必要はありません。ActionListener
  • contentPane.add(prompt2)に簡略化できますadd(prompt2)
  • または、空のコンテンツを使用して起動時に を追加し、更新を呼び出すこともprompt2 JLabelできます。contentPaneStringsetText
于 2013-03-17T20:52:42.523 に答える