2010-03-27 6 views
12

Может ли кто-нибудь сказать мне, как создать таблицу без заголовка таблицы?JTable без заголовка

Я делаю головоломку Sudoku, и я хочу создать таблицу без заголовка таблицы в Java. Является ли это возможным?

+0

Не добавлять имена столбцов ... использовать любой другой конструктор ... или по умолчанию? Надеюсь, вы говорите о JTable .. – RubyDubee

+2

@saurabh: 3133t говорить не приветствуется здесь. Я исправил ваш пост, но в следующий раз воздержусь от использования «any1», «plz thx» и нескольких «??». Могу ли я быть cheezburger? – SyntaxT3rr0r

+2

какой стол? ему тоже нужны стулья? lol –

ответ

25

Я не думаю, что вы хотите, чтобы ваш Судоку для прокрутки, так что самый простой способ должен быть не поставить свой стол в JScrollPane, который отвечает за отображение заголовка:

alt text


другой способ заключается в вызове

table.setTableHeader(null); 
+0

Для меня ни одно решение не влияет на заголовок. Я даже попробовал 'table.getTableHeader.setVisible (false)', но у меня все еще есть пустое серое пятно, где будет заголовок. Я знаю, что это старый пост; изменился API, или я чего-то не хватает? –

+0

Похоже, что вы чего-то не хватает, я просто попробовал оба предложенных способа, и они работают. Установка невидимого TableHeader действительно оставляет серое пятно, так как макет не изменяется. Если вы не можете его решить, не стесняйтесь задавать другой вопрос с кратким примером, чтобы воспроизвести вашу проблему и скриншот результата. –

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.

Смежные вопросы