在JLabel-javaswing中显示数组

在JLabel-javaswing中显示数组,java,swing,jlabel,Java,Swing,Jlabel,我试图使用JLabel在JavaSwing中显示一个数组。此代码仅打印第一个下划线(389;)。不知道我做错了什么。我试着玩界外球,但没用 dashes = new JLabel(); //display underscores for each letter in word for (int i = 0; i < temp.length; i++) { temp[i] = "_ "; dashes.setText(temp[i]); dashes.setBound

我试图使用JLabel在JavaSwing中显示一个数组。此代码仅打印第一个下划线(389;)。不知道我做错了什么。我试着玩界外球,但没用

dashes = new JLabel();
//display underscores for each letter in word
for (int i = 0; i < temp.length; i++) {
    temp[i] = "_ ";
    dashes.setText(temp[i]);
    dashes.setBounds(100, 100, 97, 33);
    frame.getContentPane().add(dashes);
}
dash=new JLabel();
//显示单词中每个字母的下划线
对于(int i=0;i
我可以像这样附加文本:

StringBuilder sb = new StringBuilder();  
    for (int i = 0; i < temp.length; i++) { // initialize the array
                    temp[i] = "_ ";
                    sb.append(temp[i]);
                        dashes.setText(sb.toString());
                        dashes.setBounds(100, 100 + add, 97, 33);
                        frame.getContentPane().add(dashes);
                }
StringBuilder sb=新建StringBuilder();
对于(int i=0;i
“quot
分配给
temp[i]
,然后在每次迭代时覆盖
破折号中的值。似乎您需要在每次迭代中追加文本,或者为
破折号创建一个新实例。如何追加文本@老实说,我在看到这是一个Java问题之前就回答了…该死的C语言!根据您似乎要做的事情:与其添加文本,不如尝试移动
dashes=new JLabel()在循环中。不清楚您真正想做什么。举个例子。例如,如果temp[0]是“abcde”,temp[1]是“defgh”,破折号中的文本应该是什么?您需要更新循环中的
破折号
,在循环中构建
字符串
,完成后,更新组件。避免使用
null
布局,像素完美的布局在现代ui设计中是一种错觉。影响零部件单个尺寸的因素太多,您无法控制。Swing的设计初衷是与布局管理器一起工作,丢弃这些布局管理器将导致无止境的问题,您将花费越来越多的时间来纠正这些问题