1. 程式人生 > 實用技巧 >Java自學-圖形介面 日期控制元件

Java自學-圖形介面 日期控制元件

兩種Swing下的日期控制元件 DatePicker 和JXDatePicker

swing沒有自帶的日期控制元件,需要第三方的類

步驟 1 : DatePicker

本例使用 Datepicker.jar 包,有一個缺點,不能設定時間,只能在建立控制元件的時候傳入指定日期。
需要設定日期,請使用JXDatePicker

package gui;
   
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.Locale;
   
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
  
import com.eltima.components.ui.DatePicker;
   
public class TestGUI {
    public static void main(String[] args) {
   
        JFrame f = new JFrame("LoL");
        f.setSize(400, 300);
        f.setLocation(200, 200);
        f.setLayout(null);
   
        final DatePicker datepick;
        datepick = getDatePicker();
   
        f.add(datepick);
   
        JButton b = new JButton("獲取時間");
        b.setBounds(137, 183, 100, 30);
        f.add(b);
   
        b.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(f, "獲取控制元件中的日期:" + datepick.getValue());
                System.out.println(datepick.getValue());
            }
        });
   
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   
        f.setVisible(true);
    }
 
    private static DatePicker getDatePicker() {
        final DatePicker datepick;
        // 格式
        String DefaultFormat = "yyyy-MM-dd HH:mm:ss";
        // 當前時間
        Date date = new Date();
        // 字型
        Font font = new Font("Times New Roman", Font.BOLD, 14);
   
        Dimension dimension = new Dimension(177, 24);
   
        int[] hilightDays = { 1, 3, 5, 7 };
   
        int[] disabledDays = { 4, 6, 5, 9 };
   
        datepick = new DatePicker(date, DefaultFormat, font, dimension);
   
        datepick.setLocation(137, 83);
        datepick.setBounds(137, 83, 177, 24);
        // 設定一個月份中需要高亮顯示的日子
        datepick.setHightlightdays(hilightDays, Color.red);
        // 設定一個月份中不需要的日子,呈灰色顯示
        datepick.setDisableddays(disabledDays);
        // 設定國家
        datepick.setLocale(Locale.CHINA);
        // 設定時鐘面板可見
        datepick.setTimePanleVisible(true);
        return datepick;
    }
}

步驟 2 : JXDatePicker

本例使用 swingx-core-1.6.2.jar 包,介面比較簡約,可以設定日期

package gui;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
 
import org.jdesktop.swingx.JXDatePicker;
 
public class TestGUI {
    public static void main(String[] args) {
 
        JFrame f = new JFrame("LoL");
        f.setSize(400, 300);
        f.setLocation(200, 200);
        f.setLayout(null);
 
        Date date = new Date();
 
        final JXDatePicker datepick = new JXDatePicker();
 
        // 設定 date日期
        datepick.setDate(date);
 
        datepick.setBounds(137, 83, 177, 24);
 
        f.add(datepick);
 
        JButton b = new JButton("獲取時間");
        b.setBounds(137, 183, 100, 30);
        f.add(b);
 
        b.addActionListener(new ActionListener() {
 
            @Override
            public void actionPerformed(ActionEvent e) {
                // 獲取 日期
                Date d = datepick.getDate();
                JOptionPane.showMessageDialog(f, "獲取控制元件中的日期 :" + d);
 
            }
        });
 
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        f.setVisible(true);
    }
}