有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JSlider SynthLookandFeel填充颜色

我在互联网上找到了这个关于如何使用xml在Java swing中自定义滑块的示例,一切都很好:

import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.plaf.synth.SynthLookAndFeel;

public class Main {

    public static void main(String[] args) {

        try {
            SynthLookAndFeel laf = new SynthLookAndFeel();
            File initialFile = new File(
                    "/pathTo/jslider.xml");
            InputStream targetStream = new FileInputStream(initialFile);
            // laf.load(Test.class.getResourceAsStream("demo.xml"), Test.class);
            laf.load(targetStream, Main.class);
            UIManager.setLookAndFeel(laf);
        } catch (Exception e) {
            e.printStackTrace();
        }

        JFrame f = new JFrame();
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        JSlider jslider = new JSlider() {
            {

                setVisible(true);
            }
        };
        jslider.putClientProperty("JSlider.isFilled", Boolean.TRUE);

        f.add(jslider);
        f.setSize(320, 240);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}

使用xml文件:

<synth>
    <style id="backingStyle">
        <opaque value="TRUE"/>
        <font name="Dialog" size="12"/>
        <state>
            <color value="WHITE" type="BACKGROUND"/>
            <color value="BLACK" type="FOREGROUND"/>
        </state>
    </style>
    <bind style="backingStyle" type="region" key=".*"/>

    <style id="SliderTrackStyle">
        <opaque value="TRUE"/>
        <state>
            <color type="BACKGROUND" value="ORANGE"/>
        </state>
    </style>
    <bind style="SliderTrackStyle" type="region" key="SliderTrack" />

    <style id="SliderThumbStyle">
        <opaque value="TRUE"/>
        <state>
            <color type="BACKGROUND" value="GRAY"/>
        </state>
        <state value="PRESSED">
            <color type="BACKGROUND" value="BLACK"/>
        </state>


    </style>
    <bind style="SliderThumbStyle" type="region" key="SliderThumb" />
</synth>

基本上我有两个问题:

1)现在你可以看到,我使用了:

jslider.putClientProperty("JSlider.isFilled", Boolean.TRUE);

因为我想看到左边的部分被填满。但这不起作用

2)除此之外,我想定义用于填充该零件的颜色,但我在internet上找不到用于定义该颜色的xml标记

有什么建议吗? 先谢谢你


共 (0) 个答案