简体   繁体   English

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

[英]JSlider Middle label cant go over 3 characters

I have a JSlider and have 3 labels in my label table, one for 0 one for 50 and one for 100. Now in my ChangeListener state Changed I set the middle label.我有一个JSlider ,在我的标签表中有 3 个标签,一个是 0,一个是 50,一个是 100。现在在我的ChangeListener状态 Changed 我设置了中间标签。 It works for all he numbers other then 100. Then for some reason it displays ... instead of 100:它适用于除 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);

在此处输入图片说明

Question is that is there any way i can display the 100 instead of the ... what it is currently displaying.问题是有什么方法可以显示 100 而不是......它当前显示的内容。

My guess is that the middle label is too small to display "100" because it was initially created with the narrower text "50", and JSlider doesn't act as a container which resizes its children as their preferred size changes, it just lays out the labels once.我的猜测是中间标签太小而无法显示“100”,因为它最初是用较窄的文本“50”创建的,并且 JSlider 不会作为一个容器,在其子项的首选大小发生变化时调整其大小,它只是放置出标签一次。

Try initialising the label with "100" instead of "50".尝试使用“100”而不是“50”来初始化标签。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM