JLabel除了我的JText之外没有显示出来

时间:2018-02-12 11:20:19

标签: java swing jframe jlabel

我无法获得如何在我的按钮或文本字段之外放置文本,当我为标签和文本字段(从互联网上复制)制作单独的代码时,它正在工作,但它在这种情况下,请告诉我如何使其工作?我有一个想法,我可能不得不使用一些框架或一些布局,但它是否有必要?请基本要点。谢谢。 :

public class UIClass extends JFrame {

public UIClass()
{   super("GUIPart1");
    super.setBounds(50,50,1000,700);
    super.setResizable(true);
    super.setVisible(true);
    super.setDefaultCloseOperation(EXIT_ON_CLOSE);
    // Button
    JButton btn1=new JButton();
    btn1.setBounds(50,50, 100, 50);
    super.add(btn1);
    super.setLayout(null);
    btn1.setText("Test"); 

    //TextField
    JTextField tf1=new JTextField(15);
    super.add(new JLabel("Label :"));
    super.add(tf1);
    tf1.setBounds(100,100,200,200);


    //OptionPane
    JOptionPane text=new JOptionPane();
    String Message=JOptionPane.showInputDialog("My Message");
    JOptionPane.showMessageDialog(null,"Thank you");


}

public static void main(String args[])
{
    UIClass u=new UIClass();

}
}

2 个答案:

答案 0 :(得分:0)

你应该致电

this.repaint();

最后。我不建议在JavaDoc中使用setBounds,它读取:

  

此方法更改与布局相关的信息,因此使组件层次结构无效。

当您调整窗口大小时显示。这适用于带

的代码
JLabel jl=new JLabel("Label : "); jl.setBounds(300,300,400,400); super.add(jl);

正如你在评论中提到的那样......

答案 1 :(得分:0)

在原始代码中,您将容器布局显式设置为null。 在这种情况下,您必须指定添加的每个其他组件的位置和大小,并且仅为按钮和文本字段组件执行此操作。

您在评论中发布的代码使用BorderLayout作为LayoutManager,它会根据自己的策略自动调整每个组件的大小和位置。

我强烈建议您学习如何使用LayoutManagers,因为它们是Java UI环境中的一个关键组件,至少是BorderLayout和GridLayout,因为如果您的应用程序不是太复杂,他们应该这样做。