JSlider 的一个简单的程序

来源:互联网 发布:詹姆斯哈登 知乎 编辑:程序博客网 时间:2024/05/16 19:46
本例子是以JSlider为控制画圆的大小 ,在JPanel上画椭圆。

/*
 *JSlider example
 *
 */

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

public class SliderDemo extends JFrame{
    private JSlider diameterSlider;
    private OvalPanel myPanel;
   
    public SliderDemo(){
        super("Slider Demo");
        myPanel = new OvalPanel();
        myPanel.setBackground(Color.green);
       
        diameterSlider = new JSlider(SwingConstants.HORIZONTAL,0,200,10);
                         /*第一个参数是: JSlider的对齐方式是:水平.
                          *第二个参数是: JSlider的起始数值 0
                          *第三个参数是: JSlider的最终数值 200
                          *第四个参数是: JSlider的初始值.10
                          */
        diameterSlider.setMajorTickSpacing(10);// JSlider的最小数值单位 10
        diameterSlider.setPaintTicks(true); // JSlider是否要显示刻度标记
        diameterSlider.addChangeListener(
            new ChangeListener(){
                public void stateChanged(ChangeEvent event){
                    myPanel.setDiameter(diameterSlider.getValue());
                }
            }
        );
        Container container = getContentPane();
        container.add(diameterSlider,BorderLayout.SOUTH);
        container.add(myPanel,BorderLayout.CENTER);
       
        setSize(220,270);
        setVisible(true);
    }
    public static void main(String args[]){
        SliderDemo demo = new SliderDemo();
        demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

class OvalPanel extends JPanel{
   
    private int diameter = 10;
   
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.fillOval(10,10,diameter,diameter);
    }
   
    public void setDiameter(int newDiameter){
        diameter = (newDiameter >=0 ? newDiameter:10);
        repaint();
    }
   
    public Dimension getPreferredSize()// 设置JPanel的大小
    {
        return new Dimension(200,200);
    }
   
    public Dimension getMinimumSize() // 设置最小宽度和高度(即比这小的尺寸将不能有效的显示该组件)
    {
        return getPreferredSize();
    }
   
}