以较少冗余的方式创建多个Jlabel和JTextField?

时间:2017-08-28 04:33:31

标签: java arrays swing user-interface jlabel

任何熟悉java Gui - swing包的人......并且知道如何在某种循环中创建多个摆动对象,如“jlabels和jtextfields”,这样你就不必分别对它们进行冗余设置了吗? ... ANYONE ???

例如 - 我必须创建60个Textfields和11个Jlabels等。 我想(如果可能的话)不必像这样单独创建每个

JLabel jlblName = new JLabel("first one"); 
JLabel jlblName = new JLabel("first two");
JLabel jlblName = new JLabel("first three");
//etc...

如果可能的话,我想找到一种方法来设置边界,并以更短的方式将标签添加到面板。

我尝试过不同的方法来实现这一点 - 使用数组并创建get方法但仍然没有运气.___。

如果你能

,请帮助我

下面是我到目前为止所写内容的一个例子......但即使它确实有效,但对于serval原因来说似乎并不实际。 ..我也不确定为什么它不起作用。

public class prospectVer2
{
private static int l = 59; //, t = 20, c=11;

public static String getInfo(int b)
{
int a=b;
String [] lah = new String [prospectVer2.l];
lah [0]= "a";
lah [1]= "b";
lah [2]= "c";
lah [3]= "d";
lah [4]= "e";
lah [5]= "f";
lah [6]= "g";
lah [7]= "e";
lah [8]= "f";
lah [9]= "g";
lah [10]= "h";
lah [11]= "i";
lah [12]= "j";
lah [13]= "k";
lah [14]= "l";
lah [15]= "m";
lah [16]= "n";
lah [17]= "o";
lah [18]= "p";
lah [19]= "q";
lah [21]= "r";
lah [22]= "s";
lah [23]= "t";
lah [24]= "u";
lah [25]= "v";
lah [26]= "w";
lah [27]= "x";
lah [28]= "y";
lah [29]= "z";
lah [30]= "aa";
lah [31]= "bb";
lah [32]= "cc  ";
lah [33]= "  dd";
lah [34]= "  ee";
lah [35]= " ff ";
lah [36]= " gg ";
lah [37]= " hh ";
lah [38]= " ii ";
lah [39]= "jj";
lah [40]= "kk";
lah [41]= "ll";
lah [42]= "mm";
lah [43]= "nn";
lah [44]= "oo";
lah [45]= "pp";
lah [46]= "qq";
lah [47]= "rr";
lah [48]= "ss";
lah [49]= "tt";
lah [50]= "uu";
lah [51]= "vv";
lah [52]= "ww";
lah [53]= "xx";
lah [54]= "yy";
lah [55]= "zz";
lah [55]= "aaa";
lah [56]= "bbb";
lah [57]= "ccc";
lah [58]= "ddd";
lah [59]= "eee";
String infos= lah[a];
return infos;
}

public static void main(String[] args)
{
  // Declare variables - arrays

  // Create Frame and Panel - set size -
  JFrame frame = new JFrame("Prospect Assignment");
  frame.setSize(700, 900);
  JPanel mypanel = new JPanel();

  JLabel[] labels = new JLabel[prospectVer2.l];

  // Create labels (60) - for loop - 
  for (int i=0; i<labels.length; i++)
    {
      labels[i] = new JLabel(prospectVer2.getInfo(i));
      mypanel.add(labels[i]);
      labels[i].setBounds(i*10+245,i*10+210,120,20);
    }

 // extra functions for gui
  frame.add(mypanel);
  mypanel.setLayout(null);
  frame.setVisible(true);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

BTW我必须使用javas Swing包复制这个站点 https://cunycitytech.askadmissions.net/emtinterestpage.aspx?ip=prospect 谢谢!

2 个答案:

答案 0 :(得分:4)

如果您尝试启动代码,问题就会很明显:​​

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 59
  at prospectVer2.getInfo(prospectVer2.java:70)
  at prospectVer2.main(prospectVer2.java:87)

在您的代码中,private static int l = 59; //, t = 20, c=11;l用于指定长度数组。在java数组中,从0索引开始,这意味着您的案例中最后一个可访问的数组索引应为58,但您尝试lah[59] = "eee";。这就是您的代码不起作用的原因。

您可以使用以下解决方案之一:

  • 增加lprivate static int l = 60;;
  • 或删除对59索引(lah[59] = "eee";)的访问权限。

答案 1 :(得分:3)

回答你的问题

  

如何创建多个摇摆对象,例如&#34; jlabels和jtextfields&#34;

您可以使用简单的方法,例如:

JLabel getLabel(String labelText) {

    JLabel label = new JLabel(labelText);
    //do additional needed setting like font, alignment etc. 
    return label;
}