2010-03-27 71 views
12

任何人都可以告诉我如何创建没有表标题的表吗?无标题的JTable

我正在制作Sudoku拼图,我想创建一个没有Java表格标题的表格。可能吗?

+0

不要添加列名...使用任何其他构造......还是默认? 我希望你在谈论JTable .. – RubyDubee 2010-03-27 08:33:27

+2

@saurabh:3133t在这里不受欢迎。我修复了你的帖子,但下次不要使用“any1”,“plz thx”和几个“??”。我可以吃芝士汉堡吗? – SyntaxT3rr0r 2010-03-27 08:40:32

+2

什么表?它是否也需要椅子?大声笑 – 2010-03-27 08:50:11

回答

25

我不认为你希望你的数独滚动,所以最简单的方法应该是把你的表成JScrollPane,这是负责显示标题:

alt text


另一种方法是调用

table.setTableHeader(null); 
+0

对我来说,这两种解决方案都没有任何影响头。我甚至尝试过'table.getTableHeader.setVisible(false)',但我仍然有一个空白的灰色地方标题。我知道这是一个旧帖子; API改变了,还是我错过了一些东西? – 2015-07-30 19:42:23

+0

看起来你错过了一些东西,我只是尝试了两种建议的方式,他们的工作。因为布局不会改变,所以将TableHeader设置为不可见将会留下灰色斑点。如果无法解决问题,请随时以简短的示例提出另一个问题以重现问题和结果的屏幕截图。 – 2015-08-01 08:55:03

1

因此,技巧似乎是先设置一个头文件使用DefaultTableModel构造函数,但稍后再调用setTableHeader(null);

enter image description here

下面是一些演示代码:

package net.raysforge.visual.demo; 

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.table.DefaultTableModel; 
public class JTableAndGBC { 

    private String[] columnNames = {"Source", "Hit", "Last", "Ur_Diff"}; 
    private JTable table; 
    private Object[][] data = {{"Swing Timer", 2.99, 5, 1.01}, 
     {"Swing Worker", 7.10, 5, 1.010}, {"TableModelListener", 25.05, 5, 1.01}}; 
    private DefaultTableModel model = new DefaultTableModel(data, columnNames); 

    public JTableAndGBC() { 
     JPanel panel = new JPanel(new GridBagLayout()); 
     table = new JTable(model); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.weightx = 1.0; 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     JScrollPane pane = new JScrollPane(table); 
     table.setPreferredScrollableViewportSize(table.getPreferredSize()); 
     table.setTableHeader(null); 
     panel.add(pane, gbc); 
     JFrame frame = new JFrame(); 
     frame.add(panel, BorderLayout.CENTER); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String args[]) throws Exception { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new JTableAndGBC(); 
      } 
     }); 
    } 
} 
3

具有与该建议的方法问题的人,请尝试以下操作:

jTable.getTableHeader().setUI(null); 

这与Java 8

测试