0

JButton、JTextField、JTextArea などのコンポーネントをすべて同じ ArrayList に格納し、後でループしてすべてのコンポーネントを JFrame に追加したいと考えています。それらをArrayListに保存しようとしましたが、それをループしてフレームに含まれるすべてのコンポーネントを追加すると、フレームに何も表示されませんでした。これを行う方法を知っている人はいますか?前もって感謝します。

4

3 に答える 3

1

ArrayList次のように宣言してみてください。

List<JComponent> = new ArrayList<JComponent>();

上記は, ,JComponentの共通の祖先であるため機能します。つまり、すべての JComponent に共通のスーパー クラスです。JButtonJTextFieldJTextArea

それは私には明らかではありません: なぜコンポーネントを最初に に追加したいのArrayListですか? に直接追加しますJFrame

于 2012-04-30T19:40:56.377 に答える
1

レイアウトマネージャーの使い方を知っていますか?

レイアウト マネージャーは、LayoutManager インターフェイス* を実装し、コンテナー内のコンポーネントのサイズと位置を決定するオブジェクトです。コンポーネントはサイズと配置のヒントを提供できますが、コンテナーのレイアウト マネージャーは、コンテナー内のコンポーネントのサイズと位置に関する最終決定権を持っています。

レイアウト マネージャーの使用

于 2012-04-30T19:50:21.020 に答える
1

これを進めます:

public class Example {

public static void main(String[] args) {

    JFrame frame = new JFrame();

    List<Component> components = new ArrayList<Component>();

    components.add(new JButton("test1"));
    components.add(new JButton("test3"));
    components.add(new JButton("test3"));

    frame.setLayout(new FlowLayout());

    for(Component component: components)
        frame.getContentPane().add(component);

    frame.pack();
    frame.setVisible(true);
}
}
  • フレームにレイアウト マネージャーを追加する
  • pack()コンポーネントに応じてフレームのサイズを変更するために呼び出します
  • フレームを表示する
于 2012-04-30T19:43:05.440 に答える