JSlider 不会为 setPaintTicks 显示颜色

问题描述 投票:0回答:1

我完全按照演示程序在教程中显示的那样操作,但是我的滑块刻度的颜色没有显示。

(这是演示视频中的滑翔机)

(这是我的)

不知道是不是因为我用的是MacBook,因为演示者用的是windows。 不确定这是我的代码还是操作系统的问题,有人可以帮忙吗?:

import javax.swing.*;
import java.awt.*;

public class SliderDemo {
    JFrame frame;
    JPanel panel;
    JLabel label;
    JSlider slider;

    SliderDemo(){
        frame = new JFrame("Slider Demo");
        panel = new JPanel();
        label = new JLabel();
        slider = new JSlider(0,100,50);

        slider.setPreferredSize(new Dimension(400, 200));
        slider.setPaintTicks(true);

        panel.add(slider);
        panel.add(label);
        frame.add(panel);
        frame.setSize(420,420);
        frame.setVisible(true);
    }
}
java swing awt jslider
1个回答
0
投票

根据如何使用滑块中的示例,您还需要包括

JSlider#setMajorTickSpacing
和/或
JSlider#setMinorTickSpacing

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;

public class Main {
    public static void main(String[] args) {
        new Main();
    }

    public Main() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            JSlider slider = new JSlider(0, 100, 50);
            slider.setPaintTicks(true);
            slider.setMajorTickSpacing(10);
            slider.setMinorTickSpacing(5);

            setLayout(new BorderLayout());
            add(slider);
        }

    }
}

我不是在谈论滴答声之类的东西,它是我的案例中缺少的滑翔机上显示的“颜色”,而它显示在 Windows 操作系统中

不同的操作系统,不同的外观和感觉。默认情况下,MacOS 会像 Windows 一样使用系统外观,我们会做它想做的事。

Soo.. 如果我添加

UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());

在创建框架之前我得到...

但是...作为用户,我希望您不要这样做,而是利用系统的外观和感觉。

有关详细信息,请参阅如何设置外观

© www.soinside.com 2019 - 2024. All rights reserved.