2015-11-04 3 views
0

У меня есть JTable, который прозрачен только для столбцов String. Похоже, на этом screenshot.Только JTable Строковые столбцы прозрачны

В чем проблема? Возможно ли прозрачность любых столбцов объекта?

table = new JTable(takeOrderWithTableController.getData(), new String[] { "Nazwa", "Trucizna?", "Na receptę?", 
      "Kod kreskowy", "Data ważności", "Ostatni dzień sprzedaży", "Ilość" }) { 
     private static final long serialVersionUID = 1L; 

     @Override 
     public Class<?> getColumnClass(int column) { 
      switch (column) { 
      case 0: 
       return String.class; 
      case 1: 
       return Boolean.class; 
      case 2: 
       return Boolean.class; 
      case 3: 
       return Integer.class; 
      case 4: 
       return String.class; 
      case 5: 
       return String.class; 
      case 6: 
       return Integer.class; 
      default: 
       return String.class; 
     } 
    }; 
    }; 
    DefaultTableCellRenderer defaultTableCellRenderer = new DefaultTableCellRenderer(); 
    defaultTableCellRenderer.setHorizontalAlignment(JLabel.CENTER); 
    defaultTableCellRenderer.setOpaque(false); 
    table.setDefaultRenderer(Object.class, defaultTableCellRenderer); 
    table.setRowSelectionAllowed(false); 
    scrollPane = new JScrollPane(table); 
    scrollPane.setPreferredSize(new Dimension(Constants.MAIN_WINDOW_MIN_WIDTH-100, 500)); 
    mainPanel.add(scrollPane); 
    mainPanel.add(Box.createRigidArea(new Dimension(0, 20))); 
    scrollPane.setOpaque(false); 
    scrollPane.getViewport().setOpaque(false); 
    mainPanel.setOpaque(false); 
    table.setOpaque(false); 
+1

Не могли бы вы предоставить нам код? Трудно понять проблему без нее. –

+0

Готово. это код, который отвечает за таблицу. –

+0

Что произойдет, если вы укажете рендеринг каждого типа, то есть 'table.setDefaultRenderer (String.class, defaultTableCellRenderer); table.setDefaultRenderer (Boolean.class, defaultTableCellRenderer); table.setDefaultRenderer (Integer.class, defaultTableCellRenderer);' –

ответ

0

Проблема решена. Я должен был добавить

table.setDefaultRenderer(String.class, defaultTableCellRenderer); 
    table.setDefaultRenderer(Boolean.class, defaultTableCellRenderer); 
    table.setDefaultRenderer(Integer.class, defaultTableCellRenderer); 
    table.setDefaultRenderer(Date.class, defaultTableCellRenderer); 

Похоже, если вы пытаетесь сделать свой стол прозрачным, вы должны установить визуализатор для каждого класса, который вы используете. @SteveChaloner - спасибо!

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