在java中添加更多标签

时间:2011-11-08 05:45:36

标签: java swing label jframe jlabel

Hello其他程序员!我正在尝试将两个JLabel添加到JFrame,但添加标签的第二个添加方法似乎覆盖了我的第一个添加方法。我尝试使用2个不同的标签变量并使用setLocation方法为每个标签提供不同的坐标点来解决此问题。但我似乎无法解决它。为什么我不能在程序中添加两个标签?顺便说一下,我没有收到任何错误。似乎更像是一个我似乎无法解决的逻辑错误。

这是我目前的代码:

import javax.swing.*;

public class test {

    private static  JLabel label;

    private static  JLabel label1;
    public static void main(String[] args){
        initializeLabel();
        initializeImage();
        initializeFrame();
    }

    private static void initializeLabel(){
         label = new JLabel();
         label.setText("hi");
         label.setLocation(54,338);
    }

    private static void initializeImage(){
        label1 = new JLabel();
        label1.setText("sss");
        label1.setLocation(55, 340);
    }

    private static void initializeFrame(){
        JFrame frame = new JFrame();
        frame.add(label1);
        frame.add(label);

        frame.setVisible(true);
    }

}// class

4 个答案:

答案 0 :(得分:7)

按照以下方式更改您的代码。

private static void initializeFrame(){
    JFrame frame = new JFrame();

    frame.setLayout(new FlowLayout()); // <-- you need this for now

    frame.add(label1);
    frame.add(label);
    frame.setVisible(true);

    // optional, but nice to have.
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
}

请在此处详细了解秋千布局:A Visual Guide to Layout Managers

更多信息:Creating a GUI With JFC/Swing

答案 1 :(得分:4)

阅读Layout Managers。框架的默认布局管理器是BorderLayout。您的代码将两个标签添加到布局的CENTER中。这是不可能的。 BorderLayout上的每个位置只能包含一个组件(它可以是带有其他组件的JPanel)。

您需要使用其他布局管理器。在不知道您的确切要求的情况下,很难建议使用哪个布局管理器。

此外,摆脱所有这些静态方法。 Swing教程有很多例子可以帮助您更好地了解如何构建程序。

答案 2 :(得分:3)

JFrame的默认布局为BorderLayout,默认位置为BorderLayout.CENTER

  

为方便起见,BorderLayout解释缺少字符串规范与常量CENTER相同。

实际上,第二个标签取代了第一个标签。

答案 3 :(得分:0)

在构建框架后添加frame.setLayout(new FlowLayout());