JTable 左上线不可见
JTable Left and Upper Lines are invisible
我正在尝试在 JTables 上显示一些数据:
private JTable table1 = new JTable() {
private static final long serialVersionUID = 1L;
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
private JScrollPane secTabFirst() {
Object [][] data = {{"90"},{"1700"},{"60"},{"0.7"}, {"Globular"}, {"Sinusoidal"}};
String[] columnNames = {"Parameters"};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
table1.setModel(model);
table1.setTableHeader(null);
table1.setShowHorizontalLines(true);
table1.setShowVerticalLines(true);
//table1.setPreferredSize(new Dimension(150,240));
//table1.setMaximumSize(new Dimension(150,240));
JScrollPane tb1 = new JScrollPane(table1);
tb1.setVisible(true);
return tb1;
}
public static void main(String args[]){
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(secTabFirst());
}
JTable 显示如下:
但是table的上边和左边的线是看不见的。此外,在 JScrollPane 中放置 table 后,它会显示 2 个暗框。
如何使线条可见而黑框消失?
谢谢,
MB
我尝试重现您的问题,但没有成功,JTable
默认情况下永远不会显示顶部和左侧边框,但这不是问题,因为它通常预期在 [=13] 内呈现=].正如@HovercraftFullOfEels 提到的,尝试给我们一个 Short, Self Contained, Correct (Compilable), Example
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
public class TestApp {
public TestApp() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(TestApp::new);
}
private void initComponents() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder(new EmptyBorder(10, 10, 10, 10));
JTable table = new JTable() {
private static final long serialVersionUID = 1L;
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
Object[][] data = {{"90"}, {"1700"}, {"60"}, {"0.7"}, {"Globular"}, {"Sinusoidal"}};
String[] columnNames = {"Parameters"};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
table.setModel(model);
table.setTableHeader(null);
JScrollPane pane = new JScrollPane(table); // borders for top and left will be rendered thanks to JScrollPanes borders
panel.add(pane);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
更新:
但是您可以自己设置 Border
以确保绘制顶部和左侧边框线:
table.setBorder(new LineBorder(Color.GRAY, 1));
这会产生(JTable
不在下面屏幕截图中的 JScrollPane
中以显示无干扰的边框):
我有一个似乎对我有用的不同解决方案,
我决定保持代码简单(我已将所有代码包含在构造函数中):
import javax.swing.*;
public class GUI {
conn conn = new conn();
// frame
JFrame f;
// Table
JTable j;
// Constructor
GUI()
{
// Frame initiallization
f = new JFrame();
// Frame Title
f.setTitle("JTable Example");
// Data to be displayed in the JTable
String[][] data = {
{ "data", "data", "data" },
{ "data", "data", "data" }
};
// Column Names
String[] columnNames = { "data", "data", "data" };
// Initializing the JTable
j = new JTable(data, columnNames);
j.setBounds(30, 40, 200, 300);
// adding it to JScrollPane
JScrollPane sp = new JScrollPane(j);
f.add(sp);
// Frame Size
f.setSize(500, 200);
// Frame Visible = true
f.setVisible(true);
}
// Main
public static void main(String[] args)
{
new GUI();
}
}
这是输出:
https://photos.app.goo.gl/itzwX8KXwNKbZsjT8
如有问题请回复本回答
我正在尝试在 JTables 上显示一些数据:
private JTable table1 = new JTable() {
private static final long serialVersionUID = 1L;
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
private JScrollPane secTabFirst() {
Object [][] data = {{"90"},{"1700"},{"60"},{"0.7"}, {"Globular"}, {"Sinusoidal"}};
String[] columnNames = {"Parameters"};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
table1.setModel(model);
table1.setTableHeader(null);
table1.setShowHorizontalLines(true);
table1.setShowVerticalLines(true);
//table1.setPreferredSize(new Dimension(150,240));
//table1.setMaximumSize(new Dimension(150,240));
JScrollPane tb1 = new JScrollPane(table1);
tb1.setVisible(true);
return tb1;
}
public static void main(String args[]){
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(secTabFirst());
}
JTable 显示如下:
但是table的上边和左边的线是看不见的。此外,在 JScrollPane 中放置 table 后,它会显示 2 个暗框。
如何使线条可见而黑框消失?
谢谢,
MB
我尝试重现您的问题,但没有成功,JTable
默认情况下永远不会显示顶部和左侧边框,但这不是问题,因为它通常预期在 [=13] 内呈现=].正如@HovercraftFullOfEels 提到的,尝试给我们一个 Short, Self Contained, Correct (Compilable), Example
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
public class TestApp {
public TestApp() {
initComponents();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(TestApp::new);
}
private void initComponents() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder(new EmptyBorder(10, 10, 10, 10));
JTable table = new JTable() {
private static final long serialVersionUID = 1L;
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
Object[][] data = {{"90"}, {"1700"}, {"60"}, {"0.7"}, {"Globular"}, {"Sinusoidal"}};
String[] columnNames = {"Parameters"};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
table.setModel(model);
table.setTableHeader(null);
JScrollPane pane = new JScrollPane(table); // borders for top and left will be rendered thanks to JScrollPanes borders
panel.add(pane);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
更新:
但是您可以自己设置 Border
以确保绘制顶部和左侧边框线:
table.setBorder(new LineBorder(Color.GRAY, 1));
这会产生(JTable
不在下面屏幕截图中的 JScrollPane
中以显示无干扰的边框):
我有一个似乎对我有用的不同解决方案, 我决定保持代码简单(我已将所有代码包含在构造函数中):
import javax.swing.*;
public class GUI {
conn conn = new conn();
// frame
JFrame f;
// Table
JTable j;
// Constructor
GUI()
{
// Frame initiallization
f = new JFrame();
// Frame Title
f.setTitle("JTable Example");
// Data to be displayed in the JTable
String[][] data = {
{ "data", "data", "data" },
{ "data", "data", "data" }
};
// Column Names
String[] columnNames = { "data", "data", "data" };
// Initializing the JTable
j = new JTable(data, columnNames);
j.setBounds(30, 40, 200, 300);
// adding it to JScrollPane
JScrollPane sp = new JScrollPane(j);
f.add(sp);
// Frame Size
f.setSize(500, 200);
// Frame Visible = true
f.setVisible(true);
}
// Main
public static void main(String[] args)
{
new GUI();
}
}
这是输出: https://photos.app.goo.gl/itzwX8KXwNKbZsjT8
如有问题请回复本回答