0
這個問題似乎是Linux/Ubuntu的系統外觀,因爲它可以在Windows和其他外觀中使用。我似乎無法找到解決這個問題的方法。我目前使用Ubuntu 15.10。使用GTKLookAndFeel將圖像插入到JTable單元中
// Set my look and feel in main()
// Printed out: "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Throwable e) {}
// I set my table to render images inside the ui method. Works with every other look and feel.
ImageIcon document = new ImageIcon(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/test/documents.png")));
DefaultTableModel model = new DefaultTableModel(new Object[]{"A","B"},0);
table = new JTable(model);
table.setRowHeight(document.getIconHeight());
table.getColumnModel().getColumn(0).setCellRenderer(table.getDefaultRenderer(ImageIcon.class));
for(int i=0; i<10; i++)
model.addRow(new Object[]{document,i});
// When the L&F is set to GTK, the table will just print out Object.toString()
// For example: "[email protected]"
我知道我可以切換我的外觀和感覺,但有一個原因,這並不用GTK工作,是有辦法來解決呢?
當表不爲空,但返回以下打印出table.getDefaultRenderer(Icon.class)
:
javax.swing.plaf.synth.SynthTableUI$SynthTableCellRenderer[Table.cellRenderer,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,[email protected],flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER]
使用自定義的默認渲染作品。我使用了JTable source中的IconRenderer類,它在製作自定義渲染器(例如居中圖像並且沒有指示您選擇單元格)時解決了新問題。
表格的默認渲染器不會顯示爲空,並且我已將結果添加到我的問題中。我會給自定義渲染器一個鏡頭。 –
使用自定義默認渲染器的作品,謝謝!仍然沒有意義,它不會自行呈現。 –
@Matthew,哎呀,你是正確的,它永遠不會是null,因爲即使沒有一個圖標的特定渲染器,默認的對象渲染器將被返回,這就是爲什麼你會得到圖標的toString(..)表示。當我打印出我得到的值'javax.swing.JTable $ IconRenderer'。看起來你只是得到了默認的Object渲染器,因爲我沒有在名字的任何地方看到Icon。 – camickr