-1

私は自分の責任ではない事実を知っている問題のために、本当に腹を立てています! 現在のプロジェクトを Eclipse で実行するたびに、表示が毎回異なります。つまり、一度実行すると、コンポーネントが 3 つしか表示されません。もう一度実行すると、さらに表示されます。もう一度実行すると、3 などと表示されます。一体何が起こっているのでしょう。これは、メイン文字列 args で実行しているコードです。

        JFrame frame = new JFrame("Survey");
    frame.setSize(500, 500);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel(new GridBagLayout());
    panel.setBackground(Color.GRAY);
    frame.add(panel, BorderLayout.NORTH);
    GridBagConstraints c = new GridBagConstraints();

    JLabel label1 = new JLabel("First name:");
    c.gridx = 0;
    c.gridy = 0;
    c.insets = new Insets(5, 5, 5, 5);
    panel.add(label1, c);

    JLabel label2 = new JLabel("Last name:");
    c.gridx = 0;
    c.gridy = 1;
    panel.add(label2, c);

    JTextField text1 = new JTextField(10);
    c.gridx = 1;
    c.gridy = 0;
    panel.add(text1, c);

    JTextField text2 = new JTextField(10);
    c.gridx = 1;
    c.gridy = 1;
    panel.add(text2, c);

    JLabel label3 = new JLabel("What is your favorite sport:");
    c.gridx = 0;
    c.gridy = 2;
    c.gridwidth = 2;
    panel.add(label3, c);

    String[] combobox = {"Basketball", "Soccor", "Other"};
    JComboBox cbx = new JComboBox(combobox);
    cbx.setPreferredSize(new Dimension(150, 20));
    c.gridx = 0;
    c.gridy = 3;
    panel.add(cbx, c);

    JLabel label4 = new JLabel("Comments about yourself:");
    c.gridx = 0;
    c.gridy = 4;
    panel.add(label4, c);

    JTextArea area = new JTextArea();
    area.setPreferredSize(new Dimension(185, 100));
    c.gridx = 0;
    c.gridy = 5;
    c.gridheight = 5;
    panel.add(area, c);

    JButton submit = new JButton("Submit");
    submit.setPreferredSize(new Dimension(20, 20));
    c.gridx = 0;
    c.gridy = 6;
    panel.add(submit, c);
4

1 に答える 1

1

再検証はまったく必要ありません。EDT スレッドでコンポーネントを適切に作成していることを確認してください。そうすれば、このような問題はもう発生しません。次の記事をチェックしてくださいhttp://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html

于 2013-04-13T02:45:40.863 に答える