java 图形用户界面 之 在界面中添加滑动块 示例代码 及 相关知识点

package J_9_3_01;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.util.*;

public class J_9_5_5_slider
{
    public static void main(String[] args)
    {
        EventQueue.invokeLater(()->{
            JFrame frame=new sliderFrame();
            frame.setTitle("这是一个滑动条测试...");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        });
    }
}
class sliderFrame extends JFrame
{

    private JTextField textField;
    ChangeListener listener_1;
    JPanel sliderPanel;
    public sliderFrame()
    {
        /*
        JLabel label=new JLabel("这是一个滑动条测试...");
        lable.setFont(new Font("Serif",Font.BOLD,20));
        add(label,BorderLayout.CENTER);
        */
        textField=new JTextField();
        sliderPanel=new JPanel();
        sliderPanel.setLayout(new GridBagLayout());

         listener_1=event->{
            JSlider source=(JSlider) event.getSource();
            textField.setText(""+source.getValue());
        };

        JSlider slider=new JSlider();
        addSlider(slider,"Plain");

        slider=new JSlider();
        slider.setPaintTicks(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        addSlider(slider,"Ticks");

        slider=new JSlider();
        slider.setPaintTicks(true);
        slider.setSnapToTicks(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        addSlider(slider,"Snap to ticks");

        slider=new JSlider();
        slider.setPaintTicks(true);
        slider.setPaintTrack(false);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        addSlider(slider,"No track");

        slider=new JSlider();
        slider.setPaintTicks(true);
        slider.setPaintTrack(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        slider.setInverted(true);
        addSlider(slider,"Inverted");

        slider=new JSlider();
        slider.setPaintTicks(true);
        slider.setPaintLabels(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        addSlider(slider,"Labels");

        slider=new JSlider();
        slider.setPaintLabels(true);
        slider.setPaintTicks(true);
        slider.setMajorTickSpacing(20);
        slider.setMinorTickSpacing(5);
        Dictionary<Integer,Component> labelTable=new Hashtable<>();
        labelTable.put(0,new JLabel("A"));
        labelTable.put(20,new JLabel("B"));
        labelTable.put(40,new JLabel("C"));
        labelTable.put(60,new JLabel("D"));
        labelTable.put(80,new JLabel("E"));
        labelTable.put(100,new JLabel("F"));

        slider.setLabelTable(labelTable);
        addSlider(slider,"Custom labels");


        add(sliderPanel,BorderLayout.CENTER);
        add(textField,BorderLayout.SOUTH);
        setSize(600,600);







    }
    public void addSlider(JSlider s,String name)
    {
        s.addChangeListener(listener_1);
        JPanel panel=new JPanel();
        panel.add(s);
        panel.add(new JLabel(name));
        panel.setAlignmentX(Component.LEFT_ALIGNMENT);
        GridBagConstraints gbc=new GridBagConstraints();
        gbc.gridy=sliderPanel.getComponentCount();
        gbc.anchor=GridBagConstraints.WEST;
        sliderPanel.add(panel,gbc);


    }


}
/*
java.util
Class EventObject

java.lang.Object
java.util.EventObject
之
getSource
public Object getSource()
事件最初发生的对象。
结果
事件最初发生的对象。


getValue
public int getValue()
从 BoundedRangeModel返回滑块的当前值。
结果
滑块的当前值



构造方法
Constructor and Description
JSlider()
创建一个水平滑块,范围为0100,初始值为50。
JSlider(BoundedRangeModel brm)
使用指定的BoundedRangeModel创建水平滑块。
JSlider(int orientation)
使用范围为 0100的指定方向创建滑块,初始值为 50 。
JSlider(int min, int max)
使用指定的最小和最大值创建水平滑块,初始值等于最小加最大值的平均值。
JSlider(int min, int max, int value)
使用指定的最小值,最大值和值创建水平滑块。
JSlider(int orientation, int min, int max, int value)
创建具有指定方向和指定的最小值,最大值和初始值的滑块。

getAlignmentY

public float getAlignmentY()
重写 Container.getAlignmentY 以返回水平对齐方式。
覆盖:
类 Container 中的 getAlignmentY
返回:
alignmentY 属性的值
另请参见:
setAlignmentY(float), Component.getAlignmentY()
setAlignmentY

public void setAlignmentY(float alignmentY)
设置水平对齐方式。
参数:
alignmentY - 新的水平对齐方式
另请参见:
getAlignmentY()
getAlignmentX

public float getAlignmentX()
重写 Container.getAlignmentX 以返回垂直对齐方式。
覆盖:
类 Container 中的 getAlignmentX
返回:
alignmentX 属性的值
另请参见:
setAlignmentX(float), Component.getAlignmentX()
setAlignmentX

public void setAlignmentX(float alignmentX)
设置垂直对齐方式。
参数:
alignmentX - 新的垂直对齐方式

LEFT_ALIGNMENT

public static final float LEFT_ALIGNMENT
getAlignmentX 的易于使用的常量。指定组件左对齐方式。

类 GridBagConstraints

java.lang.Object
  继承者 java.awt.GridBagConstraints
所有已实现的接口:
Serializable, Cloneable
public class GridBagConstraints


      extends
      Object




      implements
      Cloneable,
      Serializable

GridBagConstraints 类指定使用 GridBagLayout 类布置的组件的约束。


getComponentCount
public int getComponentCount()
获取此面板中的组件数量。
注意:此方法应在AWT树锁下调用。

结果
该面板中的组件数量。

gridy

public int gridy
指定位于组件显示区域的顶部的单元格,其中最上边的单元格为 gridy=0。值 RELATIVE 指定将组件放置在添加此组件之前刚刚添加到容器中的组件的下面。
默认值为 RELATIVE。gridy 应为非负值。


public int anchor
当组件小于其显示区域时使用此字段。它可以确定在显示区域中放置组件的位置。
可能的值有三种:相对于方向的值、相对于基线的值和绝对值。相对于方向的值是相对于容器的组件方向属性进行解释的,相对于基线值是相对于基线进行解释的,绝对值则不然。绝对值有:CENTER、NORTH、NORTHEAST、EAST、SOUTHEAST、SOUTH、SOUTHWEST、WEST 和 NORTHWEST。方向相对值有:PAGE_START、PAGE_END、LINE_START、LINE_END、FIRST_LINE_START、FIRST_LINE_END、LAST_LINE_START 和 LAST_LINE_END。相对于基线的值有:BASELINE、BASELINE_LEADING、BASELINE_TRAILING、ABOVE_BASELINE、ABOVE_BASELINE_LEADING、ABOVE_BASELINE_TRAILING、BELOW_BASELINE、BELOW_BASELINE_LEADING 和 BELOW_BASELINE_TRAILING。默认值为 CENTER。

put

public V put(K key,
             V value)
将指定 key 映射到此哈希表中的指定 value。键和值都不可以为 null。
通过使用与原来的键相同的键调用 get 方法,可以获取相应的值。

指定者:
接口 Map<K,V> 中的 put
指定者:
类 Dictionary<K,V> 中的 put
参数:
key - 哈希表的键
value - 值
返回:
此哈希表中指定键的以前的值;如果不存在该值,则返回 null
抛出:
NullPointerException - 如果键或值为 null
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值