加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 以一种不那么冗余的方式创建多个Jlabel和JTextField?

发布时间:2020-12-15 04:40:21 所属栏目:Java 来源:网络整理
导读:任何熟悉 java Gui – swing包的人……并且知道如何在某种循环中创建多个摆动对象,如“jlabels和jtextfields”,这样你就不必分别对它们进行冗余设置了吗? …任何人??? 例如 – 我必须创建60个Textfields和11个Jlabels等. 我想(如果可能的话)不必像这样单
任何熟悉 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包复制这个站点
https://cunycitytech.askadmissions.net/emtinterestpage.aspx?ip=prospect
谢谢!

解决方法

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

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”;).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读