将方法添加到Java gui

时间:2014-05-11 12:08:35

标签: java arrays swing user-interface

我正在尝试设置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?

2 个答案:

答案 0 :(得分:1)

当您需要显示某个类的集合或对象数组的属性时,您可以使用多种选项,包括:

  • 最简单的方法是使用JTextArea,给它一个等宽字体,并显示每个对象的String表示,每个对象在一行上,并使用格式化的String,例如可以通过{{1}获得},以显示内容。
  • 最好将您的对象集合放入某种类型的TableModel中,然后在JTable中显示数据。最简单的方法是使用DefaultTableModel,但这需要您将每个Book对象的属性转换为数组或Vector of Object。更灵活的是创建自己的扩展AbstractTableModel的类,但是这将需要更多的工作来创建TableModel的适当方法,并确保在任何这些方法更改数据核时触发正确的AbstractTableModel通知方法(通常是Book对象的集合)以任何重要的方式。
  • 如果要在时间显示一个对象的属性,可以使用多个JTextField填充GUI,每个JTextField对应一个Book对象的属性,然后使用Next和Previous JButtons在您的Books集合中移动,显示按下按钮时所选书籍的属性。假设当按下下一个按钮时,用于从集合中选择Book的int索引变量将递增,并且选择与该索引对应的Book。然后,所选书籍中的所有属性都显示在相应的文本字段中。

详细信息取决于您前往的路线。

答案 1 :(得分:1)

您的问题有点不清楚,但如果您想在GUI中显示图书的名称,首先您需要为每个Book提供一个名称,即字符串表示。使用name方法向Book添加getName()属性。

然后创建一个包含书名的String数组。你可以通过以下方式做到:

String names = new String[books.length];
for(int i=0; i<names.length; i++){
    names[i] = books[i].getName();
}

如果您希望用户能够选择一本书,您可以将所有名称输入JTextArea,或者可能输入JComboBox

使用JComboBox

JComboBox combo = new JComboBox(names);
panel.add(combo);

使用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);

希望这有帮助。