在GUI中显示对象数组



我正在编写一个程序,用来跟踪蓝光电影的库存。我将电影存储在一个对象数组中(该数组存储每部电影的名称、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>标签中…给我们添加一个不同的布局管理器;)

例如

相关内容

  • 没有找到相关文章

最新更新