0

私はJAVAプログラミングに不慣れで、以下のコードでメモリ変更GUIプログラムを作成しようとしています。私のJTextFieldは大きすぎて、この問題を解決する方法についての提案はありますか?また、前述のタスクを実行する別の方法が見つかった場合は、よろしくお願いします。お時間をいただきありがとうございます

JMenuBar menubar;
JMenu data,array,linkedlist,strings,stacks,tree,graphs,queues;
JMenuItem dtypeint,dtypefloat,dtypechar;

public GUI(){
    super("Data Structures Assignment");
    System.out.println("Select the Above mentioned Options for Memory Modification");
    setLayout(new FlowLayout());
    menubar = new JMenuBar();
    add(menubar);

    data = new JMenu("Basic Data Types");
    menubar.add(data);

    array = new JMenu("Arrays");
    menubar.add(array);

    linkedlist = new JMenu("Linked List");
    menubar.add(linkedlist);

    strings = new JMenu("Strings");
    menubar.add(strings);

    stacks = new JMenu("Stacks");
    menubar.add(stacks);

    tree = new JMenu("Tree");
    menubar.add(tree);

    graphs = new JMenu("Graphs");
    menubar.add(graphs);

    queues = new JMenu("Queues");
    menubar.add(queues);

    dtypeint = new JMenuItem("Integer");
    data.add(dtypeint);

    dtypefloat = new JMenuItem("Float");
    data.add(dtypefloat);

    dtypechar = new JMenuItem("Character");
    data.add(dtypechar);

    setJMenuBar(menubar);

    thehandler handler = new thehandler();
    dtypeint.addActionListener(handler);
    dtypefloat.addActionListener(handler);
    dtypechar.addActionListener(handler);
}
private class thehandler implements ActionListener{
    public void actionPerformed(ActionEvent event){

        if(event.getSource()==dtypeint){
            setLayout(new GridLayout());
            Frame F = new JFrame();
            F.setVisible(true);
            F.setSize(200,200);
            final JTextField item1;
            item1 = new JTextField("Word Size");
            item1.setColumns(15);
            F.add(item1);

        }
    }
}

}

4

2 に答える 2

1

JFrameのデフォルトのレイアウトはBoderLayoutです。デフォルトでは、コンポーネントはBorderLayoutのCENTERに追加され、使用可能なすべてのスペースを占めるサイズになります。したがって、目的の効果を得るには、レイアウトマネージャーの適切な組み合わせを使用する必要があります。

多分何かのように:

//F.add(item1);
JPanel panel = new JPanel(); // uses FlowLayout by default
panel.add(item1);
F.add(panel, BorderLayout.NORTH);

詳細と例については、レイアウトマネージャーに関するSwingチュートリアルをお読みください。

于 2013-02-17T20:25:54.323 に答える
0
  • を削除しF.setSize(200,200)ます。
  • 行の後にF.add(item1)、を追加しF.pack()ます。
  • 最後に、行を移動して、F.setVisible(true)行の後に来るようにしF.pack()ます。フレームの作成が完了するまで、フレームを表示しないでください。

このpack()メソッドは、ウィンドウのサイズを設定して、ウィンドウに含まれるコンポーネントの推奨サイズに対応します。

于 2013-02-18T12:08:15.337 に答える