2017-08-28 26 views
3

任何熟悉java gui - swing软件包的人......并且知道如何在某种类型的循环中创建像“jlabels和jtextfields”这样的多个swing对象,这样您不必分别重复设置每个对象。 ...任何人???以不太冗余的方式创建多个Jlabel和JTextFields?

例如 - 我要创建60个文本字段和11周的JLabel等 我想(如果可能)不具备单独创建像这样

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

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

我已经尝试过不同的方法来实现这一点 - 使用数组和创建get方法,仍然没有运气。

请帮助我,如果你CAN

下面是我写的,到目前为止的例子......然而即使它确实工作,它似乎并不实用的薮原因。 ..我也不知道为什么它不起作用。

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我有使用Java类Swing包 https://cunycitytech.askadmissions.net/emtinterestpage.aspx?ip=prospect 谢谢复制这个网站!如果你试图启动您的代码

回答

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 th索引(lah[59] = "eee";)。
3

要回答你的问题

如何创建像 “的JLabel和JTextField的”

你可以使用简单的方法,如多挥杆对象:

JLabel getLabel(String labelText) { 

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