java对菜单项的监听_JAVA中下拉菜单中的菜单项怎样做监听

该示例展示了如何在Java中为下拉菜单的菜单项设置监听器,并根据用户选择的日期格式重新格式化当前日期。通过创建一个JComboBox,允许用户输入或从列表中选择日期格式,然后使用SimpleDateFormat进行日期转换并显示。
摘要由CSDN通过智能技术生成

展开全部

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.*;

import java.util.*;

import java.text.SimpleDateFormat;

/* ComboBoxDemo2.java requires no other files. */

public class ComboBoxDemo2 extends JPanel

implements ActionListener {

static JFrame frame;

JLabel result;

String currentPattern;

public ComboBoxDemo2() {

setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

String[] patternExamples = {

"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 = patternExamples[0];

//Set up the UI for selecting a pattern.

JLabel patternLabel1 = new JLabel("Enter the pattern string or");

JLabel patternLabel2 = new JLabel("select one from the list:");

JComboBox patternList = new JComboBox(patternExamples);

patternList.setEditable(true);

patternList.addActionListener(this);

//Create the UI for displaying result.

JLabel resultLabel = new JLabel("Current Date/Time",

JLabel.LEADING); //== LEFT

result = new JLabel(" ");

result.setForeground(Color.black);

result.setBorder(BorderFactory.createCompoundBorder(

BorderFactory.createLineBorder(Color.black),

BorderFactory.createEmptyBorder(5,5,5,5)

));

//Lay out everything.

JPanel patternPanel = new JPanel();

patternPanel.setLayout(new BoxLayout(patternPanel,

BoxLayout.PAGE_AXIS));

patternPanel.add(patternLabel1);

patternPanel.add(patternLabel2);

patternList.setAlignmentX(Component.LEFT_ALIGNMENT);

patternPanel.add(patternList);

JPanel resultPanel = new JPanel(new GridLayout(0, 1));

resultPanel.add(resultLabel);

resultPanel.add(result);

patternPanel.setAlignmentX(Component.LEFT_ALIGNMENT);

resultPanel.setAlignmentX(Component.LEFT_ALIGNMENT);

add(patternPanel);

add(Box.createRigidArea(new Dimension(0, 10)));

add(resultPanel);

setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

reformat();

} //constructor

public void actionPerformed(ActionEvent e) {

JComboBox cb = (JComboBox)e.getSource();

String newSelection = (String)cb.getSelectedItem();

currentPattern = newSelection;

reformat();

}

/** Formats and displays today's date. */

public void reformat() {

Date today = new Date();

SimpleDateFormat formatter =

new SimpleDateFormat(currentPattern);

try {

String dateString = formatter.format(today);

result.setForeground(Color.black);

result.setText(dateString);

} catch (IllegalArgumentException iae) {

result.setForeground(Color.red);

result.setText("Error: " + iae.getMessage());

}

}

/**

* Create the GUI and show it. For thread safety,

* this method should be invoked from the

* event-dispatching thread.

*/

private static void createAndShowGUI() {

//Create and set up the window.

JFrame frame = new JFrame("ComboBoxDemo2");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Create and set up the content pane.

JComponent newContentPane = new ComboBoxDemo2();

newContentPane.setOpaque(true); //content panes must be opaque

frame.setContentPane(newContentPane);

//Display the window.

frame.pack();

frame.setVisible(true);

}

public static void main(String[] args) {

//Schedule a job for the event-dispatching thread:

//creating and showing this application's GUI.

javax.swing.SwingUtilities.invokeLater(new Runnable() {

public void run() {

createAndShowGUI();

}

});

}

}

本回答被提问者采纳

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值