8

に追加できませJTextFieldJFrame。MyJFrameには aJLabelと aが含まれていJTextFieldます。まず、 を追加しましたがJLabel、動作しています。これがコードです。

private static void createandshowGUI()
     {

    JFrame frame =new JFrame("HelloSwing");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setBackground(Color.red);
    frame.setSize(200,200);

    JLabel label=new JLabel("New To Java!!");
    frame.getContentPane().add(label);
    frame.setVisible(true);
}
public static void main(String[] args) {
    createandshowGUI();}   //and it shows the output like below .

JLabelを持つフレーム

次に、 JTextField を追加しました。

    JLabel label=new JLabel("New To Java!!");
    frame.getContentPane().add(label);

   JTextField jtf=new JTextField();
   frame.getContentPane().add(jtf);

    frame.setVisible(true);

しかし、次のような出力が表示されます。

JLabel と JTextField を持つフレーム

この問題について誰か助けてください.JFrameに複数のコンポーネントを追加できますか?私はJavaが初めてなので、フレーム、ContentPane、およびレイアウトの間で混乱しています。

4

3 に答える 3

8

実際に の追加に成功していJTextFieldます。発生している問題は、レイアウト マネージャーがフレーム全体に拡大することに起因しています。

のコンテンツ ペインは、デフォルトでマネージャをJFrame使用します。BorderLayout( BorderLayout の使用方法を参照)

私のアプリケーションでは、常にMigLayoutマネージャーを使用することになりましたが、最初にレイアウト マネージャー全般について理解する必要があるかもしれません。(「レイアウト マネージャーのビジュアル ガイド」を参照)

于 2013-03-02T09:25:26.043 に答える
3

デフォルトでContentPaneBorderLayout、単一の要素のみを受け入れる があります (デフォルトの位置 - 中央)。2 番目の要素 ( ) を追加するJTextFieldと、最後の要素 ( ) が置き換えられJLabelます。

Containersingle-argument を使用して要素を に追加する場合、要素を追加するadd位置を指定していないため、レイアウト マネージャーが自由に位置を選択します。OTOH (オーバーロードされた addを使用して) 制約を指定すると、要素が配置される場所をより詳細に制御できます。各レイアウト マネージャーのドキュメントをチェックして、それらがどのように機能し、どの制約がサポートされているかを確認してください。

現在の状況では、コンテンツ ペインに要素を直接追加する代わりに中間JPanel(FlowLayoutデフォルトとしてLayoutManager- まだ学習中の人にとって最も単純な IMHO) を使用するか、単にそのレイアウトを別のものに変更することができます。

于 2013-03-02T09:25:49.230 に答える
-1

AJFrameは 1 つのコンポーネントしか持つことができません (それを使用している場合を除きますBorderLayout)。解決策は、を使用することJPanelです。オブジェクトを JPanel に追加してJPanelから、 をに追加しJFrameます。あなたも追加する必要がありimport javax.swing.JPanel;ます。次のようにできます。

private static void createandshowGUI()
{
    JFrame frame =new JFrame("HelloSwing");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setBackground(Color.red);
    frame.setSize(200,200);

    JPanel panel = new JPanel(); //Create a JPanel

    JLabel label=new JLabel("New To Java!!");
    panel.add(label); // Add the label to the panel

    JTextField jtf = new JTextField();
    panel.add(jtf); // Add the JTextField to the panel

    frame.getContentPane().add(panel); // Add the panel to the JFrame
    frame.setVisible(true);
}
public static void main(String[] args) {
    createandshowGUI();}

これはうまくいくはずです。

于 2013-03-02T10:17:23.007 に答える