如何在Java中创建一个JLabel数组以打印到JFrame

时间:2010-04-26 09:46:15

标签: java arrays swing jframe jlabel

我正在尝试制作一系列标签。 每个标签都有一个不同的值,它来自一个函数。 我不知道要使用的标签的确切数量。 我的意思是可以打印任意数量的值。 请帮我这样做。

5 个答案:

答案 0 :(得分:7)

很容易让一个方法返回一个数组或一些JLabel集合 并将它们全部添加到JComponent(例如JPanel)

class MyPanel extends JPanel{

    public MyPanel(){
        super();
        showGUI();
    }

    private JLabel[] createLabels(){
        JLabel[] labels=new JLabel[10]
        for (int i=0;i<10;i++){
            labels[i]=new JLabel("message" + i);
        }
        return labels;
    }

    private void showGUI(){
        JLabel[] labels=createLabels();
        for (int i=0;i<labels.length();i++){
            this.add(labels[i]);
        }
    }
}

答案 1 :(得分:2)

如果可能,请不要使用单独的JLabel,而应使用JList,如果需要,它将负责布局和滚动。

Java-Tutorial - How to us a List

alt text http://java.sun.com/docs/books/tutorial/figures/uiswing/components/14ListDialog-nowrap.png

答案 2 :(得分:0)

你是开玩笑吗? 好吧,如果你是认真的,首先看看一些Java API,比如JLabel,JPanel和一些语言元素。

然后你就可以做类似的事情(我确定我的代码不会编译)

public static JPanel getLabels(int count) {
    JPanel panel = new JPanel(new FlowLayout());
    for(int i =0; i<count; i++) {
        panel.add(new JLabel(theFunctionThatCannotBeNamedHere(i)));
    }
    return panel;
}

请注意,theFunctionThatCannotBeNamedHere是您谈到的功能。

答案 3 :(得分:0)

您实际上可以创建任何Swing组件的数组,因为每个Swing组件基本上都是复合数据类型。 试试这个:

javax.swing.JTextField[] array = new javax.swing.JTextField[number_of_elements];

答案 4 :(得分:0)

import java.awt.*;
public class frame4array extends Frame
{
Checkbox c1[]; /* Same as checkbox and TextField now you add an array of Label in 
Frame and Applet also and if you want to create an array of swing components now write 
same as JTextField jt[];*/
TextField t1[];
int i;
frame4array(String p)
{
super(p);
c1=new Checkbox[2];
t1=new TextField[2];
for(i=0;i<2;i++)
{
t1[0]=new TextField();
t1[0].setBounds(200, 50, 150, 30);
t1[1]=new TextField();
t1[1].setBounds(200, 80, 150, 30);
c1[0]=new Checkbox("Singing");
c1[0].setBackground(Color.red);
c1[0].setBounds(430,200,120,40);
c1[1]=new Checkbox("Cricket",true);
}
for(i=0;i<2;i++)
{
add(t1[i]);
add(c1[i]);
}
setFont(new Font("Arial",Font.ITALIC,40));
}
public static void main(String s[])
{
frame4array f1=new frame4array("hello");
f1.setSize(600,500);
f1.setVisible(true);
}

}
/* run and enjoy */