0

jtableセル内のスライダーのサイズを変更しようとしています。ただし、列ヘッダーのサイズを変更するときは、関連するコード(列1のメソッドgetTableCellRendererComponent)を渡しますが、何も起こりません(スライダーのサイズが変更されませんか??)。

以下は私のレンダラーのコードです:

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;
}

}

ご協力いただきありがとうございます。

4

2 に答える 2

1

スライダーに BasicSliderUI を使用しているため、この問題が発生します。レンダラーで、 getTableCellRendererComponent(...) を入力してスライダーのサイズが変更されるたびに、スライダーに新しい BasicSliderUI を設定します。

于 2012-09-24T13:14:59.267 に答える