在java swings中显示标签和文本字段

时间:2015-01-26 15:54:51

标签: java swing

我无法理解为什么在下面的代码中只显示按钮,为什么没有显示标签和文本字段。

import javax.swing.*;
import java.awt.*;

class Invent extends JFrame
{
    public Invent(){
        JFrame c=new JFrame("trying");
        JLabel label1;
        JTextField txtfld1;
        JButton buttoncomp;  

        label1=new JLabel("Enter the path");
        txtfld1=new JTextField();
        buttoncomp=new JButton("Update");
        c.add(label1);
        c.add(txtfld1);
        c.add(buttoncomp);
        c. pack();
        c.setVisible(true);
    }

    public static void main(String[] args)
    {
        new Invent();                                                          
    }
}

请帮助......

2 个答案:

答案 0 :(得分:5)

JFrame内容窗格的默认布局是BorderLayout。您将所有组件添加到BorderLayout.CENTER位置(通过调用单参数add()函数),这意味着只添加了最后一个组件。

使用不同的布局管理器,或将组件添加到BorderLayout中的不同位置。

有关BorderLayout的更多信息,请访问here

顺便说一句,您的标题与您的实际问题无关:JFrame和内容窗格之间的区别在于JFrame 包含内容窗格。 JFrame类将setLayout()和add()等调用传递给其内容窗格。

答案 1 :(得分:-1)

它的工作原理不正确(对你来说,但java会按你所说的:) :)

因为你将(这些)三个组件添加到JFrame (下一个删除最后一个)

你必须按照以下方式工作:

   label1.add(txtfld1);
   label1.add(buttoncomp);

   c.add(label1);
   c.pack();
   c.setVisible(true);

还有别的......

  • 你创建了一个新的JFrame,你不需要扩展它(在你的课堂上)。
  • 在像JFrame这样的重量组件中添加标签(没有面板)是不好的,你可能有听众的问题(鼠标,动作等等......)

如果这对您有用,请告诉我......