【发布时间】: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