JSlider中间标签不能超过3个字符

时间:2014-04-25 08:26:27

标签: java swing jlabel jslider

我有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);

enter image description here

问题是,有什么方法可以显示100而不是...当前显示的内容。

1 个答案:

答案 0 :(得分:1)

我的猜测是中间标签太小而无法显示&#34; 100&#34;因为它最初是用较窄的文本&#34; 50&#34;创建的,而JSlider并不是一个容器,当它们的首选大小改变时,它会调整其子项的大小,它只是将标签布局一次。

尝试使用&#34; 100&#34;初始化标签。而不是&#34; 50&#34;。