使用 JComboBox 讓使用者選擇或輸入日期格式模式,即時顯示格式化後的當前日期時間。支援預設模式下拉選單與自由輸入,錯誤模式以紅字提示。
public class ComboBoxDemo extends JPanel implements ActionListener {
private JLabel result;
private String currentPattern;
public ComboBoxDemo() {
String[] patterns = {
"dd MMMMM yyyy", "dd.MM.yy", "MM/dd/yy",
"yyyy.MM.dd G 'at' hh:mm:ss z", "EEE, MMM d, ''yy",
"h:mm a", "H:mm:ss:SSS", "K:mm a,z", "yyyy.MMMMM.dd GGG hh:mm aaa"
};
currentPattern = patterns[0];
JComboBox patternList = new JComboBox(patterns);
patternList.setEditable(true); // 關鍵:允許編輯
patternList.addActionListener(this);
result = new JLabel(" ");
result.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(Color.black),
BorderFactory.createEmptyBorder(5,5,5,5)));
// 版面配置略...
reformat();
}
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox) e.getSource();
currentPattern = (String) cb.getSelectedItem();
reformat();
}
public void reformat() {
Date today = new Date();
SimpleDateFormat formatter = new SimpleDateFormat(currentPattern);
try {
result.setForeground(Color.black);
result.setText(formatter.format(today));
} catch (IllegalArgumentException iae) {
result.setForeground(Color.red);
result.setText("Error: " + iae.getMessage());
}
}
// main 方法啟動視窗...
}
setEditable(true) 使 JComboBox 變為可編輯下拉框,使用者可輸入任意模式字串。ActionListener 捕獲選擇/輸入確認事件(Enter 或選擇項目)。SimpleDateFormat 解析模式,捕獲 IllegalArgumentException 友善提示格式錯誤。BoxLayout 垂直堆疊元件,BorderFactory 美化結果標籤邊框。