我试图在 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());
}
但是表格的上行和左行是不可见的。此外,将表格放入 JScrollPane 后,它会显示 2 个黑框。
如何使线条可见且黑框消失?
谢谢
MB
最佳答案
我尝试复制您的问题,但没有成功,JTable
默认情况下永远不会显示顶部和左侧边框,但这不是问题,因为它通常预期在 内呈现>JScrollPane
。正如 @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
中,以显示边框而不受干扰):
关于java - JTable左上线不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65125060/