【问题标题】:How to create an array of JLabels in Java to be printed to a JFrame如何在 Java 中创建要打印到 JFrame 的 JLabels 数组
【发布时间】:2011-02-12 08:01:59
【问题描述】:

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

【问题讨论】:

    标签: java arrays swing jframe jlabel


    【解决方案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】:

      如果可能,不要使用单独的JLabels,而是使用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是你说的函数。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-09-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-02-12
              相关资源
              最近更新 更多