我试图设置一个GUI来显示类的数组,但不知道如何将数组添加到GUI。我对Java相当陌生,所以我可以使用所有可能的帮助。
Book[] bk = new Book{10]
JFrame frame = new JFrame("Bookstore");
frame.setSize(600, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.NORTH);
frame.getContentPane().add(panel);
frame.setVisible(true);
class Book implements Comparable<Book> {
//rest of code }
如何在GUI中显示Book ?
您的问题有点不清楚,但是如果您想在GUI中显示图书的名称,首先需要给每个Book
一个名称,也就是字符串表示。使用getName()
方法为Book
添加name
属性
然后创建一个包含图书名称的String
数组。你可以这样做:
String names = new String[books.length];
for(int i=0; i<names.length; i++){
names[i] = books[i].getName();
}
然后你可以把所有的名字输入到JTextArea
,或者如果你想让用户能够选择一本书,也可以输入JComboBox
。
With a JComboBox
:
JComboBox combo = new JComboBox(names);
panel.add(combo);
With a JTextArea
:
JTextArea textArea = new JTextArea(10,names.length);
textArea.setEditable(false);
for(int i=0; i<names.size; i++){
textArea.append("Book " + i + "#: " + names[i] + "n");
}
panel.add(textArea);
当您需要显示一个类的对象的集合或数组的属性时,您有几个选项可供您使用,包括:
- 最简单的是使用JTextArea,给它一个等宽字体,并显示每个对象的字符串表示,每个对象在一行,并使用格式化字符串,例如可以通过
String.format(...)
获得,来显示内容。 - 最好是将对象集合放入某种类型的TableModel中,然后在JTable中显示数据。最简单的方法是使用DefaultTableModel,但这需要将每个Book对象的属性转换为数组或Vector of object。更灵活的方法是创建自己的类来扩展AbstractTableModel,但这需要你做更多的工作来创建适当的TableModel方法,并确保在这些方法以任何重要的方式改变数据核(通常是Book对象的集合)时触发正确的AbstractTableModel通知方法。
- 如果您想一次显示一个对象的属性,您可以用几个JTextFields填充GUI,每个JTextFields对应于Book对象的一个属性,然后使用Next和Previous JButtons在Book集合中移动,在按下按钮时显示所选图书的属性。例如,当按下下一个按钮时,用于从集合中选择Book的int索引变量被加1,与该索引对应的Book被选中。然后,所选Book的所有属性都显示在相应的文本字段中。