我正在嘗試調整jtable單元格內的滑塊大小。但是,當調整列標題大小時,我確實傳入了相關的代碼(第一列的getTableCellRendererComponent方法),但沒有任何反應(滑塊沒有調整大小?)。下面在jtable單元格中調整大小組件
是我的渲染器的代碼:
public class NavigationDataModelRenderer extends JLabel implements TableCellRenderer {
private JSlider slider = null;
public NavigationDataModelRenderer()
{
super();
}
public NavigationDataModelRenderer(int tolerance)
{
super();
slider = new JSlider(tolerance * -3,tolerance *3);
slider.setPaintTicks(true);
slider.setMajorTickSpacing(tolerance);
slider.setUI(new SpreadSliderUI(slider));
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,boolean isSelected, boolean hasFocus, int row, int column)
{
Component comp = null;
if (table.getModel()!= null && table.getModel() instanceof NavigationDataModel)
{
NavigationDataModel model = (NavigationDataModel) table.getModel();
Object o = table.getModel().getValueAt(row, column);
this.setText(o.toString());
if (column == 1)
{//slider
if (model.getList() != null && model.getList().get(0)!= null && model.getList().get(row) != null)
{
slider.setValue((Integer)o);
}
comp = slider;
slider.setSize(table.getCellRect(row, column, false).getSize());
}
else if (column == 2)
{
if (((Integer)o) == Integer.MAX_VALUE)
{
this.setText("Invalid");
}
}
else
{
comp = this;
}
}
return comp;
}
}
感謝您的幫助。
一個新的UI代表應該足夠了。請編輯您的問題,以包含展示您描述的問題的[sscce](http://sscce.org/)。 – trashgod
爲了使它更加通用和高效,您最好使用'.updateUI()',不需要爲每個單元格刷新(!)創建一個,具有相同的效果,並且適用於每個UI委託,而不必關心哪一個是。 –