У меня есть этот JTable:Java JTable - Transparence с Nimbus/System L & F
List<MyTuple> l= new ArrayList<>();
l.add(new Element(1,"One"));
l.add(new Element(2,"Two"));
l.add(new Element(3,"Three"));
l.add(new Element(4,"Four"));
l.add(new Element(5,"Five"));
l.add(new Element(6,"Six"));
l.add(new Element(7,"Seven"));
JScrollPane pane = new JScrollPane();
pane.setOpaque(false);
pane.setBorder(new EmptyBorder(0, 0, 0, 0));
pane.setBackground(new Color(0,0,0,0));
pane.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 12));
pane.setBounds(3, 101, 707, 297);
MyTableModel tm=new MyTableModel(l);
table = new MyTable(tm);
table.setBorder(new EmptyBorder(0, 0, 0, 0));
table.setOpaque(false);
//table.getTableHeader().setBackground(new Color(0,0,0,0));
table.getTableHeader().setOpaque(true);
table.getTableHeader().setBorder(new EmptyBorder(0,0,0,0));
table.setBackground(new Color(0,0,0,0));
table.setFont(new Font("Segoe UI Semibold", Font.PLAIN, 12));
table.setFillsViewportHeight(false);
table.getTableHeader().setFont(new Font("Segoe UI Semibold", Font.PLAIN, 13));
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
pane.setViewportView(table);
pane.getViewport().setOpaque(false);
table.setGridColor(Color.GRAY);
table.setShowGrid(true);
getContentPane().add(pane);
MyTuple, MYTABLE и MyTableModel классы не устанавливать какие-либо пользовательские рендеринга.
Это как моя таблица выглядит под System L & F (который мне очень нравится):
Это как моя таблица выглядит под Nimbus L & F (обратите внимание на добавленный большой прямоугольник):
Я хочу, чтобы мой стол, чтобы выглядеть, как с системой L & Ф. Проблема в том, что если я устанавливаю один L & F, как я хочу, другой становится уродливым, я хочу своего рода «совместимость», есть ли способ сделать это?
Возможно, используя метод UIManager.put()?
Спасибо за помощь! теперь это работает ... Но что, если я хотел бы сделать заголовок прозрачным? Я пробовал это: но с System L & F не работает: table.getTableHeader(). setBackground (новый цвет (0,0,0,0)); . Table.getTableHeader() setOpaque (ложь); –
@FrancescoRizzi См. Мое редактирование. Надеюсь, поможет. –
Не нужно устанавливать цвет фона при использовании setOpaque (false). – camickr