当前位置: 首页 > 面试题库 >

Java:JTable中的控制台输出

彭弘方
2023-03-14
问题内容

程序应在中列出卷JTable

例如:我从vollist.java类获得此输出。

while (volumeIter.hasNext()) {
    volume = volumeIter.next();
    System.out.println(volume.getName());
}

控制台输出:

vol1
vol2
vol3
...

如何在我的控制台中获得此控制台输出JTable

table = new JTable();
table.setModel(new DefaultTableModel(
    new Object[][] {
        {null, vollist.volname(null), null, null, null},
        {null, vollist.volname(null), null, null, null},
        {null, vollist.volname(null), null, null, null},
    },
    new String[] {
        "Nr:", "Volume Name", "TotalSize [MB]", "Used [MB]", "Status"
    }
));

那只会显示row1-> vol1 row2-> vol1 ............如何获得类似于控制台row1-> vol1 row2->
vol2的输出(计数)


问题答案:

定义并实现您的TableModel(在这种情况下,扩展AbstractTableModel)

这更广泛,但是是OOP强类型。

class VolumeTableModel extends AbstractTableModel {
    private String[] columnNames = {"Nr:", "Volume Name", "TotalSize [MB]", "Used [MB]", "Status"};
    private ArrayList<Volume> volumes;

    public VolumeTableModel(ArrayList<Volume> volumes) {
        this.volumes = volumes;
    }

    public VolumeTableModel() {
        volumes = new ArrayList<Volume>();
    }

    public void addVolume(Volume volume) {
        volumes.add(volume);
        fireTableRowsInserted(volumes.size()-1, volumes.size()-1);
    }

    public int getColumnCount() {
        return columnNames.length;
    }

    public int getRowCount() {
        return volumes.size();
    }

    public String getColumnName(int col) {
        return columnNames[col];
    }

    public Object getValueAt(int row, int col) {
        Volume volume = volumes.get(row);
        switch (col) {
            case 0: return volume.number;
            case 1: return volume.name;
            case 2: return volume.totalSize;
            case 3: return volume.usedSize;
            case 4: return volume.status;
            default: return null;
        }
    }

    public Class getColumnClass(int col) {
        return String.class;
        //or just as example
        switch (col) {
            case 0: return Integer.class;
            case 1: return String.class;
            case 2: return Integer.class;
            case 3: return Integer.class;
            case 4: return String.class;
            default: return String.class;
        }
    }
}

并将其指定为表的TableModel

//if you have the Volume ArrayList
VolumeTableModel myTableModel = new VolumeTableModel(volumesArrayList);
//if you dont have the Volume ArrayList
VolumeTableModel myTableModel = new VolumeTableModel();
myTableModel.addVolume(volume);
JTable table = new JTable(myTableModel);

来自http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data的某些来源



 类似资料:
  • 我最近在我的应用程序中安装了Firebase pods,因为我希望现在能够检查用户并允许用户注册。 但是,这是控制台中的内容: 2016-09-27 22:45:50.248 样本应用[68417:] 火垒分析 v.3402000 开始 2016-09-27 22:45:50.260785 样本应用[68417:3132777] 子系统: com.apple.libsqlite3, 分类: 日志记

  • 问题内容: 我创建了一个复杂的管道。在每个阶段,我都叫工作。我想在Jenkins的某个阶段中查看每个作业的控制台输出。如何获得? 问题答案: 从构建步骤返回的对象可用于查询日志,如下所示: 从构建步骤返回的对象是RunWrapper类对象。getRawBuild()调用返回一个Run对象- 除了从此类的外观逐行读取日志之外,还有其他选择。为此,您需要禁用管道沙箱或获取这些方法的脚本批准: 如果要对

  • 问题内容: 我想知道如何像某些C / C ++程序那样在Python中创建这些漂亮的控制台计数器之一。 我在做一个循环,当前输出如下: 更整洁的是只更新最后一行; 我已经在许多控制台程序中看到了这一点,并且想知道是否/如何在Python中做到这一点。 问题答案: 一个简单的解决方案是只在字符串之前编写而不添加换行符。如果字符串永远不会变短,那就足够了… 进度条稍微复杂一点……这是我正在使用的东西:

  • 当我在Android Studio上运行应用程序时,我看到了一些垃圾收集输出: 这是什么意思?(我正在阅读大型csv文件,其中有更多70k行)

  • 问题内容: 通过控制台进行任何输入的数据类型(如我使用BufferedReader类所做的那样)为String。之后,我们将其类型转换为需要查询的数据类型(如Inter.parseInt()为整数)。但是在C语言中,我们可以接受任何输入原始数据类型,而在Java中,所有输入类型都是Neccerily String。为什么是这样? 问题答案: 控制台输入实际上以一系列字节而不是字符串的形式读入。这是

  • 我有一些多行文字作为控制台输入。诸如此类: 行数可能每次都不同(一、二、三、四等,但不是零),但这个文本总是在瞬间用行分隔符(一个粘贴,而不是按回车键输入几个)输入。这个Java应用程序必须立即开始对这些行做些什么,但出于某种原因,我不明白如何做出这种行为。我的意思是,它必须将所有这些行保存到,或,或