如何在GUI JPanel中打印对象数组?

时间:2016-02-19 23:21:10

标签: java arrays loops

我在每个对象中都有一个名为“supermarkets”的对象数组,其中有一个名为Name的String值,以及一个返回名为get-name()的名称值的方法。
我想打印所有使用GUI JPanel的数组中的元素。 我可以用它来打印它?
这就是我要打印的内容:

for (int i=0; i<supermarkets.length;i++){
       supermarkets[i].get-name();
}

2 个答案:

答案 0 :(得分:1)

您有几种选择:

  1. 根据需要创建尽可能多的JLabel,并在其中设置每个元素的文本。

  2. 使用JList

  3. 创建一个扩展JPanel并覆盖paintComponent()的类。使用Graphics.drawString()

  4. 其中,我认为#2可能是最好的。

答案 1 :(得分:0)

您可以使用JOptionPane,更具体地说,可以使用JOptionPane.showMessageDialog(Params);来实现的messageDialog,其中params取决于您选择的方法。阅读文档了解更多信息。

示例#1

StringBuilder text = new StringBuilder();
for (int i=0; i<supermarkets.length;i++){
    text.append("\n"+supermarkets[i].get-name());
}

JOptionPane.showMessageDialog(null,"Available supermarkets:"+text.toString());

示例#2

如果超市的数量有限,

示例#1 就好了,但是如果它超出了特定的数量,那么窗口就会变得很大,以至于它不适合屏幕。为了防止这种情况发生,这里有一个例子,每行显示4个超市,以逗号分隔

int supermarketsPerLine = 4;//The ammount of supermarkets displayed per line

StringBuilder text = new StringBuilder();
for (int i=0; i<supermarkets.length;i++){
    text.append(supermarkets[i].get-name()+", ");
    if(i%supermarketsPerLine == 0 && i>0) text.append("\n");
}
text.delete(text.length()-2, text.length()-1);// to remove the last comma (,) from the end of the list.     
JOptionPane.showMessageDialog(null,"Available supermarkets:\n"+text.toString());

我希望有所帮助。