图形用户界面(一)GUI元素之JSlider

 新知识点:

    *    JSlider类有四个参数:第一个指明滑动条的放置方向;第二个和第三个指明滑动条的最小值和最大值;第四个指定滑动条的初值
    *    滑动条个属性:
                            最大刻度、最小刻度、是否显示刻度线、是否显示刻度标签

    *    slider和Label对齐方式的设置

    *    滑动条产生的是change event事件

    *    滑动条的取值

    *    颜色的设置

 

源程序

SlideColor.java

 

import javax.swing.JFrame;
public class SlideColor {
 public static void main(String[] args) {
  JFrame frame = new JFrame("SlideColor");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  frame.getContentPane().add(new SlideColorPanel());
  
  frame.pack();
  frame.setVisible(true);
 }
}

 

SlideColorPanel.java

 

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

 

public class SlideColorPanel extends JPanel{
 private JPanel controls, colorPanel;
 private JSlider rSlider, gSlider, bSlider;
 private JLabel rLabel, gLabel, bLabel;
 
 public SlideColorPanel() {
  rSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);    //构造一个滑动条
  rSlider.setMajorTickSpacing(50);                                    //设置最大刻度
  rSlider.setMinorTickSpacing(10);                                    //设置最小刻度
  rSlider.setPaintTicks(true);                                            //显示刻度线
  rSlider.setPaintLabels(true);                                         //显示大刻度的标签
  rSlider.setAlignmentX(Component.LEFT_ALIGNMENT);  //设置对齐方式左对齐
  
  gSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
  gSlider.setMajorTickSpacing(50);
  gSlider.setMinorTickSpacing(10);
  //gSlider.setPaintTicks(true);
  gSlider.setPaintLabels(true);
  gSlider.setAlignmentX(Component.LEFT_ALIGNMENT);
  
  bSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
  bSlider.setMajorTickSpacing(50);
  bSlider.setMinorTickSpacing(10);
  bSlider.setPaintTicks(true);
  //bSlider.setPaintLabels(true);
  bSlider.setAlignmentX(Component.LEFT_ALIGNMENT);
  SliderListener listener = new SliderListener();                  //实例化监听器,以备添加
  rSlider.addChangeListener(listener);
  gSlider.addChangeListener(listener);
  bSlider.addChangeListener(listener);
  
  rLabel = new JLabel("Red: 0");       
  rLabel.setAlignmentX(Component.LEFT_ALIGNMENT);   
  gLabel = new JLabel("Green: 0");
  gLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
  bLabel = new JLabel("Blue: 0");
  bLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
  
  controls = new JPanel();                                                     //new 一个Panel盛放所有的标签和滑动条
  BoxLayout layout = new BoxLayout(controls, BoxLayout.Y_AXIS);
  controls.setLayout(layout);
  controls.add(rLabel);
  controls.add(rSlider);
  controls.add(Box.createRigidArea(new Dimension(0, 20)));
  controls.add(gLabel);
  controls.add(gSlider);
  controls.add(Box.createRigidArea(new Dimension(0, 20)));
  controls.add(bLabel);
  controls.add(bSlider);
  
  colorPanel = new JPanel();                                                   //new 一个Panel,作为颜色显示区域
  colorPanel.setPreferredSize(new Dimension(100, 100));
  colorPanel.setBackground(new Color(0, 0, 0));
  
  add(controls);
  add(colorPanel);
 }
 
 private class SliderListener implements ChangeListener {
  
  private int red , green, blue;
  
  public void stateChanged(ChangeEvent arg0) {
   
   red = rSlider.getValue();                          //颜色取值
   green = gSlider.getValue();
   blue = bSlider.getValue();
   
   rLabel.setText("Red: " + red);
   gLabel.setText("Green: " + green);
   bLabel.setText("Blue: " + blue);
   colorPanel.setBackground(new Color(red, green, blue));                  //设背景色
  }
 }
}

 

显示:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值