2010-03-27 48 views
12

Bất cứ ai có thể cho tôi biết cách tạo bảng không có tiêu đề bảng không?JTable mà không có tiêu đề

Tôi đang tạo câu đố Sudoku và tôi muốn tạo một bảng không có tiêu đề bảng trong Java. Có thể không?

+0

Đừng thêm tên cột ... sử dụng bất kỳ nhà xây dựng khác ... hoặc mặc định? Tôi hy vọng bạn đang nói về JTable .. – RubyDubee

+2

@saurabh: 3133t nói không được hoan nghênh ở đây. Tôi đã sửa bài đăng của bạn nhưng lần sau không sử dụng "any1", "plz thx" và một số "??". Tôi có thể haz cheezburger? – SyntaxT3rr0r

+2

bảng nào? nó có cần ghế không? lol –

Trả lời

25

Tôi không nghĩ rằng bạn muốn Sudoku của bạn để di chuyển, vì vậy cách đơn giản nhất nên không đặt bảng của bạn thành một JScrollPane, đó là trách nhiệm hiển thị tiêu đề:

alt text


một cách khác là để gọi

table.setTableHeader(null); 
+0

Đối với tôi, giải pháp không có bất kỳ tác dụng trên tiêu đề. Tôi thậm chí đã thử 'table.getTableHeader.setVisible (false)' nhưng tôi vẫn có một chỗ trống màu xám, nơi tiêu đề sẽ là. Tôi biết đây là một bài cũ; API đã thay đổi hay tôi thiếu gì đó? –

+0

Có vẻ như bạn đang thiếu thứ gì đó, tôi vừa thử cả hai cách được đề xuất và chúng hoạt động. Đặt TableHeader vô hình thực sự để lại một điểm màu xám vì bố trí không thay đổi. Nếu bạn không thể giải quyết nó, hãy hỏi một câu hỏi khác với một ví dụ ngắn để tái tạo vấn đề của bạn và một ảnh chụp màn hình của kết quả. –

1

Vì vậy, các trick có vẻ là để đầu tiên thiết lập một tiêu đề bằng cách sử dụng constructor DefaultTableModel nhưng sau đó để gọi setTableHeader (null);

enter image description here

Dưới đây là một số mã demo:

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

Bất cứ ai gặp vấn đề với các phương pháp đề nghị, hãy thử như sau:

jTable.getTableHeader().setUI(null); 

này được thử nghiệm với Java 8.

Các vấn đề liên quan