Java Swing | JSpinner

JSpinner 是 javax.swing 包的一部分。它包含一个单行输入框,该输入框可能是一个数字,或者是来自有序序列的一个对象。用户可以直接在微调器的文本字段中手动输入合法数据。微调器有时更受青睐,因为它们不需要下拉列表。微调器包含一个向上箭头和一个向下箭头,按下时会显示上一个和下一个元素。

JSpinner 的构造函数如下:

  • JSpinner(): 创建一个空的微调器,其初始值设置为零,且没有约束。
  • JSpinner( SpinnerModel model): 创建一个微调器,并将作为参数传递的指定微调模型(SpinnerModel)设置给该微调器。

常用方法包括:

  • SpinnerListModel(List l): 使用列表 l 的元素创建一个微调模型。该微调模型可用于设置为微调器的模型。
  • SpinnerNumberModel(int value, int max, int min, int step): 返回一个微调模型,其初始值设置为 value,并具有最小值、最大值以及确定的步长值。
  • setValue(Object v): 将微调器的值设置为作为参数传递的对象。
  • getValue(): 返回微调器的当前值。
  • getPreviousValue(): 返回微调器的上一个值。
  • getNextValue(): 返回微调器的下一个值。

1. 创建一个简单 JSpinner 的程序

// Java Program to create a
// simple JSpinner
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
class spinner extends JFrame {
    // frame
    static JFrame f;

    // default constructor
    spinner()
    {
    }

    // main class
    public static void main(String[] args)
    {
        // create  a new frame
        f = new JFrame("spinner");

        // create a JSpinner
        JSpinner s = new JSpinner();

        // set Bounds for spinner
        s.setBounds(70, 70, 50, 40);

        // set layout for frame
        f.setLayout(null);

        // add panel to frame
        f.add(s);

        // set frame size
        f.setSize(300, 300);

        f.show();
    }
}

输出:

!image

2. 创建一个 JSpinner 并为其添加 ChangeListener 的程序;使用 JSpinner 选择出生日期的程序。

// Java program to select your
// date of birth using JSpinner
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
class spinner1 extends JFrame implements ChangeListener {
    // frame
    static JFrame f;

    // label
    static JLabel l, l1;

    // spinner
    static JSpinner s, s1, s2;

    // default constructor
    spinner1()
    {
    }

    // main class
    public static void main(String[] args)
    {
        // create an object of the class
        spinner1 sp1 = new spinner1();

        // create  a new frame
        f = new JFrame("spinner");

        // create a label
        l = new JLabel("select your date of birth");
        l1 = new JLabel("1 January 2000");

        // create a JSpinner with a minimum, maximum and step value
        s = new JSpinner();
        s1 = new JSpinner(new SpinnerNumberModel(1, 1, 31, 1));

        // setvalue of year
        s.setValue(2000);

        // store the months
        String months[] = { "January", "February", "March",
        "April", "May", "June", "July", "August", 
        "September", "October", "Novemeber", "December" };

        // create a JSpinner with list values
        s2 = new JSpinner(new SpinnerListModel(months));

        // add change listener to spinner
        s.addChangeListener(sp1);
        s1.addChangeListener(sp1);
        s2.addChangeListener(sp1);

        // set Bounds for spinner
        s.setBounds(70, 70, 50, 40);
        s1.setBounds(70, 130, 50, 40);
        s2.setBounds(70, 200, 90, 40);

        // setbounds for label
        l.setBounds(10, 10, 150, 20);
        l1.setBounds(10, 300, 150, 20);

        // set layout for frame
        f.setLayout(null);

        // add label
        f.add(l);
        f.add(l1);
        f.add(s);
        f.add(s1);
        f.add(s2);

        // add panel to frame
        f.add(s);

        // set frame size
        f.setSize(400, 400);

        f.show();
    }

    // if the state is changed
    public void stateChanged(ChangeEvent e)
    {
        l1.setText(s1.getValue() + " " + s2.getValue() + " " + s.getValue());
    }
}

输出:

!image

注意:此程序无法在在线编译器中运行,请使用离线 IDE。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/39149.html
点赞
0.00 平均评分 (0% 分数) - 0