1

JListをGUIに追加しようとしていますが、どのように配置するのか疑問に思っていますか?選択のためにGUIに送信されるデータのTextAreaの右側に表示したいと思います。

誰かがこれを行う方法を提案できますか?コードは次のとおりです(注:JavaおよびGUIは非常に新しい)

protected static void createAndShowGUI() {
        GUI predict = new GUI();
        JFrame frame = new JFrame("Phone V1.0");

        frame.setContentPane(predict.createContentPane());

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setMinimumSize(new Dimension(300, 400));
        frame.setVisible(true); // Otherwise invisible window
}

private JPanel createContentPane() {
    JPanel pane = new JPanel();

    TextArea = new JTextArea(5, 10);
    TextArea.setEditable(false);
    TextArea.setLineWrap(true);
    TextArea.setWrapStyleWord(true);
    TextArea.setWrapStyleWord(true);
    pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS)); 
    //Adds the buttons from Top     to Bottom

    String[] items = {"dsfsdfd"};
    list = new JList(items);
    JScrollPane scrollingList = new JScrollPane(list);
    int orient = list.getLayoutOrientation();

    JPanel window = new JPanel();
    pane.add(window);

    JPanel buttonPanel = new JPanel();
    buttonPanel.setLayout(new GridLayout(5, 3));

    JButton[] buttons = new JButton[] {
        new JButton("Yes"),
        new JButton(""),
        new JButton("Clr"),
        new JButton("1"),
        new JButton("2abc"),
        new JButton("3def"),
        new JButton("4ghi"),
        new JButton("5jkl"),
        new JButton("6mno"),
        new JButton("7pqrs"),
        new JButton("8tuv"),
        new JButton("9wxyz"),
        new JButton("*+"),
        new JButton("0_"),
        new JButton("^#")
    };  // Array Initialiser

    for (int i = 0; i < buttons.length; i++) {
        buttonPanel.add(buttons[i]);
        buttons[i].addActionListener(this);
    }
    pane.add(TextArea);
    pane.add(list);
    pane.add(buttonPanel);


    return pane;
}
4

5 に答える 5

2

Using Layout Manangerに関する Swing チュートリアルのセクションを読んでください。レイアウト マネージャーを 1 つだけ使用する必要はありません。レイアウト マネージャーをネストして、目的の効果を得ることができます。

于 2010-05-03T23:57:23.173 に答える
1

そのような配置には、 MigLayoutのようなレイアウトマネージャーを使用できます。

代替テキスト
(出典:miglayout.com

于 2010-05-03T17:19:40.863 に答える
1

BorderLayoutマネージャーを使用して、新しいパネルにTextAreaandをラップします。基本的に、BorderLayout マネージャーを使用すると、北、南、東、西、および中心の座標を使用してコンポーネントを配置できます。親コンテナの方が使用可能なスペースが多いため、中央のコンポーネントは使用可能なすべてのスペースを占有します。list

private JPanel createContentPane() {
    JPanel pane = new JPanel();  //this is your main panel
    JPanel textAreaPanel = new JPanel(new BorderLayout()); //the wrapper

    //Some more code...

    //Then at the end
    //Make your TextArea take the center
    textAreaPanel.add(TextArea, BorderLayout.CENTER);
    //And the list to the east
    textAreaPanel.add(list, BorderLayout.EAST);
    pane.add(textAreaPanel);
    pane.add(buttonPanel);

    return pane;
}

優れた点は、パネルを他のパネル内にネストして、別のレイアウト マネージャーを追加して目的のレイアウトを取得できることです。

関係のないことですが、 Java の命名規則に従うようにしてください。JTextArea TextArea使用する代わりにJTextArea textArea。あなたとあなたのコードを読んでいる人々がコードを理解しやすくなります。

于 2010-05-03T22:00:21.727 に答える
0

他の人が示唆したように、レイアウト マネージャーの概念をよく理解してください。標準の Swing API に付属しているものと、優れたサードパーティ製のものがあります。

さらにJList、スクロール ペイン ( JScrollPane) に を追加する必要があります。分割ペインに追加することを検討JSplitPaneしてください ( )。そして、考慮とは、「ネット上の誰かがそう言ったからそうする」という意味ではなく、「エンドユーザーにとって意味がある場合にそうする」という意味です。

于 2010-05-04T19:59:40.333 に答える
0

私はあなたをお勧めしますFormLayout。このレイアウトを見つける前に、私は本当に苦労しましGridBagLayoutた。FormLayoutより強力で、学習と使用がはるかに便利で、無料です。チャンスを与えてください。

于 2010-05-03T19:48:54.087 に答える