【问题标题】:Unable to fill JTable component created with IntelliJ GUI Designer无法填充使用 IntelliJ GUI Designer 创建的 JTable 组件
【发布时间】:2016-03-11 00:12:23
【问题描述】:

我有一个在 IntelliJ 的 GUI 设计器中制作的 JTable 组件。该类绑定到 GUI 表单并且编译没有问题,但表保持为空。我也尝试过使用其他一些代码,但我对 java 有点陌生,真的很想知道这个问题的答案。请不要给我半个答案或指向我一个页面去弄清楚。我在这里是因为我确实尝试过。

package com.company;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;

/**
 * Created by User on 3/8/2016.
 */
public class TableGUI {
    private static JFrame frame;
    private JTable table1;
    private JPanel panel1;

    public TableGUI() {
        DefaultTableModel model = new DefaultTableModel();

        table1.setAutoCreateRowSorter(true);
        table1.setFillsViewportHeight(true);
        table1.setPreferredScrollableViewportSize(new Dimension(550, 200));
        model.addColumn("Id");
        model.addColumn("First Name");
        model.addColumn("Last Name");
        model.addColumn("Company Name");
        table1.setModel(model);
    }

    public static void main(String[] args) {
        frame = new JFrame("TableGUI");
        frame.setContentPane(new TableGUI().panel1);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
        frame.setSize(new Dimension(600, 400));
    }
}

【问题讨论】:

  • 您永远不会将 JTable 添加到 GUI。组件不会神奇地出现在 GUI 上——您必须将它们添加到其中。在这里,您需要将 JTable 添加到 JScrollPane(实际上是添加到其视口)并将其添加到 panel1 变量中。
  • 您似乎也没有在表格中添加任何内容
  • JTable 组件是在 GUI 设计器内部制作的,它不是以编程方式制作的...... TableGUI 类绑定到在设计器中制作的 Swingform。我已经看到他们明确说不要添加您自己的“new JTable()”的线程,因为它会创建另一个未绑定到 GUI 的实例。
  • 什么 Swingform ???您发布的代码没有 Swingform。您发布的代码有一个显示空 JFrame 的 main() 方法。如果您需要更多帮助,您需要发布一个正确的 SSCCE 来说明问题,因为您发布的代码什么都不做。
  • 我(部分)想通了,我在DefaultTabelModel model 中添加了一行数据,如下所示:model.addRow(new Object[] { "cell1", "cell2", "cell3", "cell4"});。所以我的代码部分工作,但它不显示列名......据说只显示new JScrollPane()。我不知道如何在通过设计器添加的 JTable 上实现这一点。

标签: java swing user-interface intellij-idea jtable


【解决方案1】:

我想通了,答案是我缺少 JScrollPane。我必须通过 IntelliJ Designer 放入一个名为 JScrollPane 的组件,然后将 JTable 放入其中。这允许列名显示在 JTable 上。

【讨论】:

  • 没有这个答案就不会知道
猜你喜欢
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
相关资源
最近更新 更多