0

グリッド レイアウトを使用して GUI ウィンドウを作成しようとしています。すべてのコンポーネントを追加してコンパイルしますが、実行しても何も表示されません。このようにグループ化して積み重ねたシンプルなレイアウトを作ろうとしています。

{introduction message}
{time label
time input text}
{gravity label
gravity input text}
{answer label
answer text box}
{calculate button clear button}

これが私のコードです

import javax.swing.*;
import java.awt.*; 

public class TurnerRandyFallingGUI  extends JFrame
{   
final int WINDOW_HEIGHT=500;
final int WINDOW_WIDTH=500;

public TurnerRandyFallingGUI()
{
    setTitle("Falling Distance Calculator");

    setSize(WINDOW_WIDTH,WINDOW_HEIGHT);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setLayout(new GridLayout(1, 5));

    //labels
    JLabel introMessage = new JLabel("Welcome to the Falling distance"+
                                       "calculator");
    JLabel timeLabel = new JLabel("Please enter the amount of time "+
                "in seconds the object was falling.");
    JLabel gravityLabel = new JLabel("Enter the amount of gravity being "+
                    "forced onto the object");
    JLabel answerLabel = new JLabel("Answer");

    //text fields
    JTextField fTime = new JTextField(10);
    JTextField gForce = new JTextField(10);
    JTextField answerT = new JTextField(10);

    //buttons
    JButton calculate = new JButton("Calculate");
    JButton clr = new JButton("clear");

    //panels
    JPanel introP = new JPanel();
    JPanel timeP = new JPanel();
    JPanel gravityP = new JPanel();
    JPanel answerP = new JPanel();
    JPanel buttonsP = new JPanel();

    //adding to the panels
    //intro panel
    introP.add(introMessage);
    //time panel
    timeP.add(timeLabel);
    timeP.add(fTime);
    //gravity panel
    gravityP.add(gravityLabel);
    gravityP.add(gForce);
    //answer panel
    answerP.add(answerLabel);
    answerP.add(answerT);
    //button panel
    buttonsP.add(calculate);
    buttonsP.add(clr);




    setVisible(true);
}
    public static void main(String[] args)
    {
        new TurnerRandyFallingGUI();
    }
}
4

3 に答える 3

2

上記のクラスが拡張する JFrame には何も追加していません。コンポーネントをコンテナに追加する必要があります。そのコンテナの階層は、最終的に最上位のウィンドウにつながりthisます。つまり、上記のコードにはメソッド呼び出しがないadd(someComponent)か、機能的に同様のthis.add(someComponent)メソッド呼び出しがあります。

  • すべての JPanel を単一の JPanel に追加することを検討してください
  • を呼び出して、クラスである JFrame インスタンスにその JPanel を追加することを検討してくださいadd(thatJPanel)
  • JFrame を拡張せず、必要なときに作成するだけの方がさらに良いでしょうが、それは別の機会に別の議論の対象になる可能性があります。
于 2013-04-13T02:50:19.403 に答える
2

ステートメントの前setVisible (true)に、次のステートメントを追加します。

add (introP);
add (timeP);
add (gravityP);
add (answerP);
add (buttonsP);
于 2013-04-13T02:54:43.980 に答える