JSpinner trong Java Swing

JSpinner chứa một dòng Input cho phép nhập dữ liệu đầu vào có thể là một số hoặc một Object theo một dãy có thứ tự. Người dùng có thể nhập thủ công dữ liệu vào Input của JSpinner. Spinners chứa một mũi tên lên và xuống để hiển thị phần tử trước đó và phần tử tiếp theo khi nó được nhấn.

Khởi tạo JSpinner

JSpinner cung cấp một số constructor sau:

  • JSpinner() – Tạo một JSpinner rỗng với giá trị ban đầu được đặt thành 0.
  • JSpinner( SpinnerModel model) – Tạo một JSpinner với mộtSpinnerModel được chỉ định được truyền dưới dạng đối số.

Một số hàm thường xuyên sử dụng trong JSpinner:

  • SpinnerListModel(List l) – Tạo một JSpinner với các phần tử của danh sách l. Mẫu spinner này có thể được dùng để làm Model cho JSpinner .
  • setValue(Object v) – Đặt giá trị cho JSpinner.
  • getValue() – Trả về giá trị hiện tại của JSpinner.
  • getPreviousValue() – Trả về giá trị trước đó của JSpinner.
  • getNextValue()  – Trả về giá trị tiếp theo của JSpinner.

Ví dụ tạo JSpinner với giá trị số nguyên có thể tăng hoặc giảm dần khi nhấn vào nút mũi tên lên và xuống.

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(); 
    } 
} 

Output

Xử lý sự kiện trong JSpinner

Trong phần này chúng ta sẽ tạo ra các JSpinner cho phép người dùng chọn ngày tháng năm sinh và xử lý sự kiện khi người dùng chọn các giá trị trên chúng.

 

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()); 
    } 
} 

Output

Nguồn tham khảo

https://www.geeksforgeeks.org/java-swing-jspinner/

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x