簡體   English   中英

無法將JTextField添加到JFrame

[英]Not able to add JTextField to JFrame

我無法將JTextField添加到JFrame 我的JFrame包含一個JLabel和一個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和Layouts之間存在混淆。

實際上你成功地添加了JTextField 您遇到的問題源於布局管理器,它在整個框架中展開它。

默認情況下, JFrame的內容窗格使用BorderLayout管理器。 (請參見如何使用BorderLayout

在我的應用程序中,總是最終使用MigLayout管理器,但首先您可能希望熟悉布局管理器。 (請參閱布局管理器的可視指南

默認情況下,您的ContentPane具有BorderLayout ,它只接受單個元素(在默認位置 - 中心)。 添加第二個元素( JTextField )后,它替換了最后一個元素( JLabel )。

使用單參數addContainer添加元素時,您沒有指定您想要它們的位置,因此布局管理器會隨意選擇一個位置。 OTOH如果您指定約束(使用重載的添加 ),那么您可以更好地控制元素的放置位置。 檢查每個布局管理器的文檔,以了解它們的工作方式以及它支持的約束。

對於您當前的情況,您可以使用中間JPanel (其中包含FlowLayout作為其默認的LayoutManager - 最簡單的恕我直言,仍在學習),而不是直接向內容窗格添加元素,或者只是將其布局更改為其他內容。

JFrame只能有一個組件(除非你使用它有一個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();}

這應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM