我有JSlider
并且在我的标签表中有3个标签,一个用于0,一个用于50,一个用于100.现在在我的ChangeListener
状态更改我设置了中间标签。它适用于除100之外的所有数字。然后由于某种原因它显示...而不是100:
Hashtable<Integer, JLabel> labelTable = new Hashtable<Integer, JLabel>();
final JLabel middleLabel = new JLabel("50");
labelTable.put(0, new JLabel("0"));
labelTable.put(50, middleLabel);
labelTable.put(100, new JLabel("100"));
final JSlider slider = new JSlider(0, 100, 50);
slider.addChangeListener(new ChangeListener()
{
@Override
public void stateChanged(ChangeEvent e)
{
middleLabel.setText("" + slider.getValue());
}
});
slider.setLabelTable(labelTable);
slider.setPaintLabels(true);
问题是,有什么方法可以显示100而不是...当前显示的内容。
答案 0 :(得分:1)
我的猜测是中间标签太小而无法显示&#34; 100&#34;因为它最初是用较窄的文本&#34; 50&#34;创建的,而JSlider并不是一个容器,当它们的首选大小改变时,它会调整其子项的大小,它只是将标签布局一次。
尝试使用&#34; 100&#34;初始化标签。而不是&#34; 50&#34;。