2011-10-15 39 views
7

Tôi đã thử:Làm cách nào để thay đổi màu nền tiêu đề của JTable?

table.getTableHeader().setBackground(Color.BLACK); 

Không hoạt động.

CHỈNH SỬA: Mã này không chỉ hoạt động trong dự án của tôi. Làm việc trong các dự án khác. Tôi có thể đã thay đổi một thuộc tính ngăn chặn màu sắc thay đổi. Hoặc có thể NetBeans có một số thuộc tính giữ màu mặc định. Tôi đã nhận thấy một cái gì đó khác. Màu của tiêu đề trong dự án của tôi chiếu sáng theo một cách khác. Trong các ví dụ khi thay đổi màu hoạt động, tôi thấy các đồ họa khác nhau.

CHỈNH SỬA 2: Cái gì khác. Tôi nhận thấy rằng các nút sẽ không thay đổi màu sắc. Phải là một cái gì đó chung chung. Hi vọng điêu nay co ich. Rất tiếc, SSCCE sẽ không hoạt động trong trường hợp này, vì tôi không thể tạo lại sự cố. Tôi chắc chắn đang sử dụng đúng tên thành phần.

+0

Xem thêm [Làm thế nào tôi có thể đặt một điều khiển trong JTableHeader của một JTable?] (Http://stackoverflow.com/questions/7137786/how-can-i-put-a-control-in-the-jtableheader -of-a-jtable). – trashgod

+0

Điều này không liên quan gì đến NetBeans giữ một số màu mặc định và tất cả phải làm với một lỗi trong mã của bạn, nhưng chỉ với câu lệnh "mã này không hoạt động trong dự án của tôi", và không có mã nào, tốt nhất là sscce, Tôi nghi ngờ rằng bất kỳ người trong chúng ta có thể cung cấp cho bạn bất kỳ trợ giúp nào khác ngoài việc đề xuất bạn cố gắng gỡ lỗi sâu hơn một chút. Có lẽ bảng bạn đang cố gắng thay đổi màu tiêu đề trên không phải là cùng một đối tượng bảng được hiển thị, nhưng một lần nữa mà không dễ hiểu và tốt nhất là mã compilable, đây chỉ là một SWAG trên một phần của tôi? –

Trả lời

1

Giải quyết. Trong NetBeans:

  • Nhấp chuột phải vào tên của dự án
  • Thuộc tính
  • Application - Desktop App
  • Look and Feel: chọn 'Java Mặc định' (không làm việc với hệ thống mặc định)
  • Hãy nhớ để làm sạch và xây dựng lại trước khi chạy dự án

Ngoài ra đồ họa của toàn bộ dự án đã thay đổi hình thức.

+0

Có vẻ như tùy chọn này chỉ có sẵn cho các dự án NetBeans kiểu ['Ứng dụng Java Desktop'] (http://stackoverflow.com/questions/2561480/netbeans-gui-editor-generating-its-own-incomprehensible-code/ 2561540 # 2561540). Xem xét cập nhật câu hỏi để bao gồm thẻ [tag: jsr296]. – trashgod

+0

Tôi vẫn nghĩ rằng nó có thể được giải quyết trong mã, rằng bạn có thể không được thiết lập các tài sản cho các tài liệu tham khảo chính xác. –

+0

Tôi đề nghị bạn nên gộp dự án của mình * với mã nguồn * và tải nó lên đâu đó, sau đó chúng ta hãy xem xét nó. –

11

Nó phù hợp với tôi. Dưới đây là tôi SSCCE:

import java.awt.*; 
import javax.swing.*; 
import javax.swing.table.*; 

public class TableHeaderBackground { 
    public static void main(String[] args) { 
     Integer[][] data = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; 
     String[] cols = {"A", "B", "C"}; 

     JTable table = new JTable(data, cols); 

     JTableHeader header = table.getTableHeader(); 
     header.setBackground(Color.black); 
     header.setForeground(Color.yellow); 

     JOptionPane.showMessageDialog(null, new JScrollPane(table)); 
    } 
} 

Nếu điều này không giúp bạn, sau đó tôi đề nghị bạn nên tạo và đăng của riêng SSCCE để chúng tôi có thể xem những gì là sai.

+1

nó hoạt động thực sự. Đối với bảng của tôi mặc dù nó không hoạt động. Xem EDIT. –

3

Tiêu đề bảng cũng sử dụng thành phần trình kết xuất, như ô bảng.

Nhìn này:

table.getTableHeader().setDefaultRenderer(new DefaultTableRenderer(){ 
    { 
    // you need to set it to opaque 
    setOpaque(true); 
    } 

@Override 
public Component getTableCellRendererComponent(final JTable table, 
    final Object value, final boolean isSelected, final boolean hasFocus, 
    final int row, final int column) { 
    // set the background 
    setBackground(yourDesiredColor); 
    } 
}); 

Nếu bạn không cần phải có màu sắc năng động, bạn cũng có thể thiết lập các màu sắc trong các nhà xây dựng của các renderer.

5

tôi khuyên bạn nên làm điều này:

DefaultTableCellRenderer headerRenderer = new DefaultTableCellRenderer(); 
headerRenderer.setBackground(new Color(239, 198, 46)); 

for (int i = 0; i < myJTable.getModel().getColumnCount(); i++) { 
     myJTable.getColumnModel().getColumn(i).setHeaderRenderer(headerRenderer); 
} 
7

Hãy thử này ... table.getTableHeader() setOpaque (false);.

sau đó đặt nền của tiêu đề jtable

table.getTableHeader(). SetBackground (Color.BLACK);

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