java 中未显示 JTable

JTable not showing in java

我是 java 的新手。我想在我的 GUI 中显示 table。我知道有几个这样的问题,但这对我没有帮助。任何帮助将不胜感激。

Test.java

package test;

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


    class Test {

        JFrame frame;
        JTable table;
        Container pane;

        public void initGUI () {
            frame = new JFrame("Table");
            frame.setLayout(null);
            frame.setVisible(true);
            frame.setBounds(100, 100, 500, 500);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            pane = frame.getContentPane();

            Object[][] rows = {
                {"Amir", "Karachi"},
                {"Noman", "Quetta"},
                {"Salman", "Rawalpindi"}
            };
            Object[] cols = {"Name", "City"};

            table = new JTable(rows, cols);
            pane.add(new JScrollPane(table));
        }

        public static void main (String args[]) {
            Test obj = new Test();
            obj.initGUI();
        }

    }
frame.setLayout(null);

不要使用空布局。

因为您不使用布局管理器,所以滚动窗格的大小为 (0, 0),所以没有什么可绘制的。

Swing 旨在与布局管理器一起使用。将框架的默认布局管理器保留为 BorderLayout。

此外,在将所有组件添加到框架后,框架应该可见。

阅读 How to Use Tables 上 Swing 教程中的部分以获取工作示例以帮助您入门。使用在教程中找到的代码结构,然后对其进行修改。

除了frame.setLayout(null);你可以排除getContentPane();。这是一个工作:

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

class Test {

    JFrame frame;
    JTable table;
    Container pane;

    public void initGUI() {
        frame = new JFrame("Table");
        frame.setVisible(true);
        frame.setBounds(100, 100, 500, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Object[][] rows = {
            {"Amir", "Karachi"},
            {"Noman", "Quetta"},
            {"Salman", "Rawalpindi"}
        };
        Object[] cols = {"Name", "City"};

        table = new JTable(rows, cols);
        frame.add(new JScrollPane(table));

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String args[]) {
        Test obj = new Test();
        obj.initGUI();
    }
}

输出: