我正在编写一个程序,用来跟踪蓝光电影的库存。我将电影存储在一个对象数组中(该数组存储每部电影的名称、ID、光盘数量和价格)。我知道数组列表是在数组中存储对象的一种更有效的方式,但是为了这个赋值的目的,我需要使用数组。我以前有这个程序打印到控制台没有问题,但我试图将这个程序添加到GUI。我已经为GUI编写了一个类,但是我不知道如何将数组添加到JPanel和JFrame中。
这是我的GUI类:class TextInFrame extends JFrame {
private JLabel greeting;
private JLabel inventoryUnsorted;
private JPanel panel;
public TextInFrame(){
super("Blu-ray Movie Inventory");
setLayout(new FlowLayout());
JFrame.setDefaultLookAndFeelDecorated(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
pack();
setVisible(true);
panel = new JPanel();
greeting = new JLabel(BluRay.programGreeting());
add(greeting);
greeting.setVerticalTextPosition(JLabel.BOTTOM);
greeting.setHorizontalTextPosition(JLabel.CENTER);
panel.add(greeting);
this.add(panel);
}
}
下面是main方法的一部分,它有
public class Inventory {
public static void main(String[] args) {
TextInFrame window = new TextInFrame();
window.setSize(600, 600);
BluRay[] movies = new BluRay[5];
movies[0] = new BluRay("Man of Steel", "48461", 24, 17.99);
movies[1] = new BluRay("Fast Five", "84624", 10, 12.99);
movies[2] = new BluRay("Batman Begins", "15483", 19, 13.98);
movies[3] = new BluRay("X-Men", "48973", 6, 15.99);
movies[4] = new BluRay("The Outsiders", "01893", 16, 9.98);
String[] stringArray = Arrays.copyOf(movies, movies.length, String[].class);
// loop to print through the BluRay movies array
for (String string : stringArray) {
System.out.println(string);
}
每次我尝试将数组添加到JLabel或JPanel中时,我得到错误"BluRay[]不能转换为字符串"。我完全被如何在GUI中获得这些信息难住了。我在JPanel中的问候语也有问题。当调整JFrame的大小时,它没有换行。难住了。
看一下如何使用列表,它们将允许您在GUI的列表中显示任意对象
查看创建模型和编写自定义单元渲染器
JLabel
默认不包装它的内容。您可以使用JTextArea
设置为不可编辑,并修改背景颜色和边框,或者简单地将JLabel
的文本包装在<HTML>
标签中…给我们添加一个不同的布局管理器;)