有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用jlabel填充数组的java

我的JLabels和JTextFields中有这段代码。我想知道,为了节省空间,我是否可以以某种方式将我的jlabel和/或JTextFields添加到数组中?我有比下面更多的jlabel和JTextFields

     JLabel lblVundet = new JLabel("Won");
     lblVundet.setBounds(5, 10, 50, 16);
     mainframe.add(lblVundet);

     JLabel lblUafgjort = new JLabel("Draw");
     lblUafgjort.setBounds(5, 55, 60, 16);
     mainframe.add(lblUafgjort);

     JLabel lblTabt = new JLabel("Lost");
     lblTabt.setBounds(5, 100, 60, 16);
     mainframe.add(lblTabt);


     txtFieldWon = new JTextField();
     txtFieldWon.setBounds(168, 4, 134, 28);
     mainframe.add(txtFieldWon);
     txtFieldWon.setColumns(10);

     txtFieldDraw = new JTextField();
     txtFieldDraw.setBounds(168, 49, 134, 28);
     mainframe.add(txtFieldDraw);
     txtFieldDraw.setColumns(10);

     txtFieldLost = new JTextField();
     txtFieldLost.setBounds(168, 94, 134, 28);
     mainframe.add(txtFieldLost);
     txtFieldLost.setColumns(10);

共 (2) 个答案

  1. # 1 楼答案

    如果您只想将它们存储在一个数组中,我建议您使用ArrayList:

    ArrayList<JLabel> allJLabels = new ArrayList<JLabel>();
    ArrayList<JTextField> allJTextFields = new ArrayList<JTextFields>();
    

    如果这是你想要的。只有当所有标签/文本字段的值相同时,这才会节省空间。但我认为并非所有标签都有相同的文本。 为此,我将创建您自己的方法:

    private JLabel createLabel(String text, int b1, int b2, int b3, int b4)
    {
        JLabel l = new JLabel(text);
        l.setBounds(b1, b2, b3, b4);
        return l;
    }
    

    那就只有一句话:

    allJLabels.add(createLabel("Won", 5, 10, 50, 16));
    

    之后,将它们添加到大型机(按照添加项目的顺序):

    for(int i = 0; i < allJLabels.size(); ++i)
    {
        mainframe.add(allJLabels.get(i));
    }
    
  2. # 2 楼答案

    您可以创建for循环并减少代码中的冗余。如果你用两种不同的方法分离下面的代码,并调用它们以减少重复,这将是很好的

    如果你真的需要(尽管我看不出有任何需要),你可以将标签/字段存储到数组中,因为你手头有很多标签和字段

    String labels[] = {"Won", "Draw", "Lost"};
    JLabel label;
    for (int i =0; i<labels.length; i++) {
        label = new JLabel(labels[i]);
        label.setBounds(5, 10 + (i * 45), 50, 16);
        mainframe.add(label);
    }
    
    JTextField jTextField;
    int txtFieldCount = 3;
    for (int i=0 ;i<txtFieldCount; i++) {
       jTextField = new JTextField();
       jTextField.setBounds(168, 4 + (i * 45), 134, 28);
       mainframe.add(jTextField);
       jTextField.setColumns(10);
    }