2

私は Java をある程度知っていますが、あらゆるタイプの GUI 開発を行うのは初めてです。私が行ったことのほとんどは、ターミナルを介して実行される小さなプログラムでした。

どちらの場合も、足を濡らそうとすると、次のコードで行き詰まっていることに気付きました。

public class MyGui {

   public static void main(String[] args) {
      JFrame frame = new JFrame("My Frame");
      JPanel leftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
      JPanel centerPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));

      JTextArea userField = new JTextArea("User:");
      userField.setEditable(false);

      JTextArea user = new JTextArea("myuser");
      user.setEditable(true);

      leftPanel.add(userField);
      centerPanel.add(user);

      frame.getContentPane().add(leftPanel);
      frame.getContentPane().add(centerPanel);
      frame.setVisible(true);
      frame.setSize(500, 500);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

基本的に、左側にフィールドがあり、右側にその値があるテーブル ウィンドウが必要です。これはどのように行うことができますか?

現在の出力はmyuser、ウィンドウのちょうど中央にあります。

4

2 に答える 2

2

2 つのパネルは必要ありません。GridLayout を持つ 1 つだけで十分です。

public static void main(String [] args) {
        JFrame frame = new JFrame("My Frame");
          JPanel panel = new JPanel(new GridLayout(1,2)); // split the panel in 1 rows and 2 cols


          JTextArea userField = new JTextArea("User:");
          userField.setEditable(false);

          JTextArea user = new JTextArea("myuser");
          user.setEditable(true);

          panel.add(userField);
          panel.add(user);

          frame.getContentPane().add(panel);

          frame.setVisible(true);
          frame.setSize(500, 500);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
于 2013-07-09T14:46:36.770 に答える
2

JFrameデフォルトのレイアウトはBorderLayoutであるため、出力はコンテナーに追加する最後のパネルになります。

したがって、getContentPane().add(panel) パネルを CENTER に追加します。JFrame のコンテンツが正しく表示されないのはなぜですか?も参照してください。

質問の2番目の部分は、どの方法を使用するかが指定されていません.GridLayoutをフレームまたはメインパネルに使用して、パネルをコンテナに追加できます.他の方法もあります.

理解を深めるために、 LayoutManagersの詳細をお読みください。

于 2013-07-09T14:46:44.317 に答える