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();
}
}
输出:
我是 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();
}
}
输出: