请教下 怎么实现上面图片的功能 。谢谢。

解决方案 »

  1.   

    以前做的  像后面那个调动的没试过,你参考下吧:import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.HeadlessException;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JSlider;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;public class JSliderDemo extends JFrame implements ChangeListener {
    private JSliderEx sliderRed,sliderGreen,sliderBlue;
    private JPanel colorPanel,sliderPanel;
    private Color color;
    @Override
    public void stateChanged(ChangeEvent e) {
    color = new Color(sliderRed.getValue(),sliderGreen.getValue(),sliderBlue.getValue());
    colorPanel.setBackground(color);
    } public JSliderDemo() throws HeadlessException {
    super("JSliderDemo");
    setSize(400,300);
    Container container = getContentPane();
    try {//主要作用在于显示焦点所在
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
    e.printStackTrace();
    }
    colorPanel = new JPanel();
    container.add(colorPanel,BorderLayout.CENTER);

    sliderPanel = new JPanel();
    sliderPanel.setBackground(color.YELLOW);
    sliderPanel.setPreferredSize(new Dimension(400,150));
    sliderPanel.setLayout(new GridLayout(3,1,5,5));

    sliderRed = new JSliderEx(this,0,255);
    sliderGreen = new JSliderEx(this,0,255);
    sliderBlue = new JSliderEx(this,0,255);

    sliderRed.setBackground(Color.RED);
    sliderGreen.setBackground(Color.GREEN);
    sliderBlue.setBackground(Color.BLUE);

    sliderPanel.add(sliderRed);
    sliderPanel.add(sliderGreen);
    sliderPanel.add(sliderBlue);

    container.add(sliderPanel,BorderLayout.SOUTH);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    } class JSliderEx extends JSlider{
    public JSliderEx(ChangeListener listener,int min,int max){
    super(min,max);
    setPaintTicks(true);//显示一条条竖着的
    setMajorTickSpacing(15);//大块大块的分,当中还有最小的
    setMinorTickSpacing(3);//最小单位
    setPaintLabels(true);//显示下标数字
    addChangeListener(listener);//添加监听事件,滑动条是否改变
    }
    } public static void main(String[] args) {
    JSliderDemo application = new JSliderDemo();
    }}
      

  2.   

    以前做的  像后面那个调动的没试过,你参考下吧:import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.HeadlessException;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JSlider;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;public class JSliderDemo extends JFrame implements ChangeListener {
    private JSliderEx sliderRed,sliderGreen,sliderBlue;
    private JPanel colorPanel,sliderPanel;
    private Color color;
    @Override
    public void stateChanged(ChangeEvent e) {
    color = new Color(sliderRed.getValue(),sliderGreen.getValue(),sliderBlue.getValue());
    colorPanel.setBackground(color);
    } public JSliderDemo() throws HeadlessException {
    super("JSliderDemo");
    setSize(400,300);
    Container container = getContentPane();
    try {//主要作用在于显示焦点所在
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
    e.printStackTrace();
    }
    colorPanel = new JPanel();
    container.add(colorPanel,BorderLayout.CENTER);

    sliderPanel = new JPanel();
    sliderPanel.setBackground(color.YELLOW);
    sliderPanel.setPreferredSize(new Dimension(400,150));
    sliderPanel.setLayout(new GridLayout(3,1,5,5));

    sliderRed = new JSliderEx(this,0,255);
    sliderGreen = new JSliderEx(this,0,255);
    sliderBlue = new JSliderEx(this,0,255);

    sliderRed.setBackground(Color.RED);
    sliderGreen.setBackground(Color.GREEN);
    sliderBlue.setBackground(Color.BLUE);

    sliderPanel.add(sliderRed);
    sliderPanel.add(sliderGreen);
    sliderPanel.add(sliderBlue);

    container.add(sliderPanel,BorderLayout.SOUTH);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    } class JSliderEx extends JSlider{
    public JSliderEx(ChangeListener listener,int min,int max){
    super(min,max);
    setPaintTicks(true);//显示一条条竖着的
    setMajorTickSpacing(15);//大块大块的分,当中还有最小的
    setMinorTickSpacing(3);//最小单位
    setPaintLabels(true);//显示下标数字
    addChangeListener(listener);//添加监听事件,滑动条是否改变
    }
    } public static void main(String[] args) {
    JSliderDemo application = new JSliderDemo();
    }}
      

  3.   

    以前做的  像后面那个调动的没试过,你参考下吧:import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.HeadlessException;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JSlider;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;public class JSliderDemo extends JFrame implements ChangeListener {
    private JSliderEx sliderRed,sliderGreen,sliderBlue;
    private JPanel colorPanel,sliderPanel;
    private Color color;
    @Override
    public void stateChanged(ChangeEvent e) {
    color = new Color(sliderRed.getValue(),sliderGreen.getValue(),sliderBlue.getValue());
    colorPanel.setBackground(color);
    } public JSliderDemo() throws HeadlessException {
    super("JSliderDemo");
    setSize(400,300);
    Container container = getContentPane();
    try {//主要作用在于显示焦点所在
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
    e.printStackTrace();
    }
    colorPanel = new JPanel();
    container.add(colorPanel,BorderLayout.CENTER);

    sliderPanel = new JPanel();
    sliderPanel.setBackground(color.YELLOW);
    sliderPanel.setPreferredSize(new Dimension(400,150));
    sliderPanel.setLayout(new GridLayout(3,1,5,5));

    sliderRed = new JSliderEx(this,0,255);
    sliderGreen = new JSliderEx(this,0,255);
    sliderBlue = new JSliderEx(this,0,255);

    sliderRed.setBackground(Color.RED);
    sliderGreen.setBackground(Color.GREEN);
    sliderBlue.setBackground(Color.BLUE);

    sliderPanel.add(sliderRed);
    sliderPanel.add(sliderGreen);
    sliderPanel.add(sliderBlue);

    container.add(sliderPanel,BorderLayout.SOUTH);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    } class JSliderEx extends JSlider{
    public JSliderEx(ChangeListener listener,int min,int max){
    super(min,max);
    setPaintTicks(true);//显示一条条竖着的
    setMajorTickSpacing(15);//大块大块的分,当中还有最小的
    setMinorTickSpacing(3);//最小单位
    setPaintLabels(true);//显示下标数字
    addChangeListener(listener);//添加监听事件,滑动条是否改变
    }
    } public static void main(String[] args) {
    JSliderDemo application = new JSliderDemo();
    }}
      

  4.   

    DesignGridLayout
    下载import net.java.dev.designgridlayout.DesignGridLayout;import javax.swing.BoundedRangeModel;
    import javax.swing.DefaultBoundedRangeModel;
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JSlider;
    import javax.swing.JSpinner;
    import javax.swing.SpinnerNumberModel;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;public class XColorChooser {    public XColorChooser(){
            initModels();
            initUI();
        }    public void showDialog(){
            JDialog dialog = new JDialog();
            dialog.add(container);
            dialog.pack();
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setVisible(true);
        }    private final void bind(final BoundedRangeModel m1, final SpinnerNumberModel m2) {
            m1.addChangeListener(new ChangeListener(){ @Override public void stateChanged(ChangeEvent e) { m2.setValue(m1.getValue()); }});
            m2.addChangeListener(new ChangeListener(){ @Override public void stateChanged(ChangeEvent e) { m1.setValue(((Integer)m2.getValue())); }});
        }    private final void initModels() {
            initModel1(red);
            initModel1(green);
            initModel1(blue);
            initModel2(red2);
            initModel2(green2);
            initModel2(blue2);
            bind(red, red2);
            bind(green, green2);
            bind(blue, blue2);
        }    private final JSlider createJSlider(BoundedRangeModel model){
            JSlider slider = new JSlider(model);
            slider.setPaintTicks(true);
            slider.setPaintLabels(true);
            slider.setMinorTickSpacing(17);
            slider.setMajorTickSpacing(85);
            return slider;
        }    private void initUI() {
            DesignGridLayout layout = new DesignGridLayout(container);
            layout.row().grid(new JLabel("红")).add(createJSlider(red),3).add(new JSpinner(red2));
            layout.row().grid(new JLabel("绿")).add(createJSlider(green),3).add(new JSpinner(green2));
            layout.row().grid(new JLabel("蓝")).add(createJSlider(blue),3).add(new JSpinner(blue2));
        }    private final void initModel1(BoundedRangeModel m){
            m.setMinimum(0);
            m.setMaximum(255);
        }    private final void initModel2(SpinnerNumberModel m){
            m.setMinimum(Integer.valueOf(0));
            m.setMaximum(Integer.valueOf(255));
            m.setStepSize(Integer.valueOf(1));
        }    private final JPanel container = new JPanel();
        private final BoundedRangeModel red = new DefaultBoundedRangeModel();
        private final BoundedRangeModel green = new DefaultBoundedRangeModel();
        private final BoundedRangeModel blue = new DefaultBoundedRangeModel();
        private final SpinnerNumberModel red2 = new SpinnerNumberModel();
        private final SpinnerNumberModel green2 = new SpinnerNumberModel();
        private final SpinnerNumberModel blue2 = new SpinnerNumberModel();    public static void main(final java.lang.String[] args) {
            java.awt.EventQueue.invokeLater(new java.lang.Runnable(){
                    @Override public void run(){
                        new XColorChooser().showDialog();
                    }
                });
        }
    }