如何在 Java 中创建要打印到 JFrame 的 JLabels 数组
Posted
技术标签:
【中文标题】如何在 Java 中创建要打印到 JFrame 的 JLabels 数组【英文标题】:How to create an array of JLabels in Java to be printed to a JFrame 【发布时间】:2011-02-12 08:01:59 【问题描述】:我正在尝试制作一个标签数组。 每个标签都有一个不同的值,这些值来自一个函数。 我不知道要使用的标签的确切数量。 我的意思是可以打印任意数量的值。 请帮我做这件事。
【问题讨论】:
【参考方案1】: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 */
【讨论】:
【参考方案2】:如果可能,不要使用单独的JLabel
s,而是使用JList
,它会在必要时负责布局和滚动。
Java-Tutorial - How to us a List:
(来源:sun.com)
【讨论】:
【参考方案3】:实际上,您可以创建一个包含任何 Swing 组件的数组,因为每个 Swing 组件基本上都是复合数据类型。 试试这个:
javax.swing.JTextField[] array = new javax.swing.JTextField[number_of_elements];
【讨论】:
【参考方案4】:只需一个方法返回一个数组或一些 JLabels 集合即可 并将它们全部添加到您的 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]);
【讨论】:
【参考方案5】:你在开玩笑吗? 好吧,如果您是认真的,请先了解一些 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
是你说的函数。
【讨论】:
以上是关于如何在 Java 中创建要打印到 JFrame 的 JLabels 数组的主要内容,如果未能解决你的问题,请参考以下文章