java – 以一种不那么冗余的方式创建多个Jlabel和JTextField?
任何熟悉
java Gui – swing包的人……并且知道如何在某种循环中创建多个摆动对象,如“jlabels和jtextfields”,这样你就不必分别对它们进行冗余设置了吗? …任何人???
例如 – 我必须创建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); } 顺便说一下,我必须使用javas Swing包复制这个站点 解决方法
如果您尝试启动代码,问题就会很明显:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 59 at prospectVer2.getInfo(prospectVer2.java:70) at prospectVer2.main(prospectVer2.java:87) 在你的代码中你有私有静态int l = 59; //,c = 11;和l用于指定长度数组.在java数组中从0索引开始,所以它意味着你的情况下最后一个可访问的数组索引应该是58,但你尝试lah [59] =“eee”;.这就是您的代码不起作用的原因. 您可以使用以下解决方案之一: >增加l:private static int l = 60 ;;>或删除对第59个索引的访问权限(lah [59] =“eee”;). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |