我在我的Swing应用程序中遇到一个问题,我通过传递模型来创建一个简单的JList - 即使模型已经明确填充,JList也拒绝显示它自己模型的内容。
DefaultListModel dlm = new DefaultListModel();
String[] modelElems = {"Apple", "Orange", "Banana"};
for(int i = 0; i < modelElems.length; i++)
dlm.add(i, modelElems[i]);
JList lstFruitList = new JList(dlm);
lstFruitList.setVisible(true);
当我的Swing应用程序运行时,我在屏幕上看到JList,但它完全是空的!我看了无数的例子,倾注了Swing教程,似乎无法弄清楚发生了什么。有人曾经发生过这种事吗?!?任何明显错误的东西?!?
注意:
以下print语句确实显示我的模型有3个元素:
// Prints "Fruit List model has a size of 3"
System.out.println("Fruit List model has a size of " + dlm.size());
然而,如果我尝试循环并在我的模型中打印水果的名称,通过在每次迭代时调用(String)dlm.get(i)
(其中i
是迭代变量),它将每个模型元素打印为null
...
hmmmm
答案 0 :(得分:0)
该代码适用于我。一些想法:
setVisible
,你究竟是如何将它添加到你正在显示的内容中?lstFruitList.setBackground(Color.BLUE);
供参考,这是我运行的代码:
import java.awt.*;
import javax.swing.*;
public class javatest{
public static void main(String[] args){
JFrame f = new JFrame("HELLO");
DefaultListModel dlm = new DefaultListModel();
String[] modelElems = {"Apple", "Orange", "Banana"};
for(int i = 0; i < modelElems.length; i++)
dlm.add(i, modelElems[i]);
JList lstFruitList = new JList(dlm);
lstFruitList.setVisible(true);
JPanel p = new JPanel();
p.add( lstFruitList );
f.add( p );
f.setLocation(0,0);
f.setSize(400,400);
f.setVisible(true);
}
}