14、Java Swing星座选择器界面的实现
在了解各種基本組件的使用,以及常見事件的處理之后,
本案例將綜合文本框、按鈕和下拉列表組件,實現一個星座選擇器程序。
程序允許用戶在下拉列表中選擇一個自己的星座,如果不在列表中還可以增加星座,也可以刪除星座。實現過程如下。
(1) 創建一個 SampeDemo 類,在 main() 方法中調用它的構造方法。代碼如下:
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class SampeDemo {public static void main(String[] args){new SampeDemo(); //調用構造方法} }(2) 創建 SampeDemo 構造方法完成窗口的創建,按鈕和下拉列表的添加,以及相應事件的監聽。具體代碼如下:
private JPanel panel=new JPanel(); private JComboBox cmb=new JComboBox(); //創建JComboBox private JLabel label=new JLabel("添加新星座:"); private JLabel showInfo=new JLabel(); //用于顯示信息 private JTextField jtf=new JTextField(16); //用于輸入信息 private JButton buttonAdd=new JButton("新增"); private JButton buttonDel=new JButton("刪除"); public SampeDemo() {JFrame frame=new JFrame("選擇你的星座");cmb.addItem("--請選擇--"); //向下拉列表中添加一項cmb.addItem("巨蟹座");cmb.addItem("獅子座");cmb.addItem("雙魚座");panel.add(cmb);panel.add(label);panel.add(jtf);panel.add(buttonAdd);panel.add(buttonDel);frame.add(panel);buttonAdd.addActionListener(new MyActionListener()); //“添加”按鈕的事件buttonDel.addActionListener(new MyActionListener()); //“刪除”按鈕的事件cmb.addItemListener(new MyItemListener()); //下拉列表的事件frame.setBounds(300,200,600,200);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }上述程序創建的下拉列表為 cmb,調用它的 addItem() 方法向其中添加了兩個選項。程序分別監聽了按下“新增”按鈕和“刪除”按鈕時的單擊事件,以及從下拉列表中選擇項時的選中事件。
(3) 創建 MyItemListener 類,實現 ItemListener 接口對選中事件進行處理,此時將選中項顯示到文本框中。實現代碼如下:
// 監聽選中事件 class MyItemListener implements ItemListener {@Overridepublic void itemStateChanged(ItemEvent e){String str=e.getItem().toString();panel.add(showInfo);showInfo.setText("您選擇的星座是:"+str);} }(4) 創建 MyActionListener 類,實現 ActionListener 接口對按鈕的單擊事件進行處理。實現代碼如下:
// 監聽添加和刪除按鈕事件 class MyActionListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e){String command=e.getActionCommand();//添加按鈕處理if(command.equals("新增")){if(jtf.getText().length()!=0){cmb.addItem(jtf.getText()); //添加項panel.add(showInfo);showInfo.setText("添加成功,新增了:"+jtf.getText());}else{panel.add(showInfo);showInfo.setText("請輸入要添加星座");}}//刪除按鈕處理if(command.equals("刪除")){if(cmb.getSelectedIndex()!=-1){//先獲得要刪除的項的值String strDel=cmb.getSelectedItem().toString();cmb.removeItem(strDel); //刪除項panel.add(showInfo);showInfo.setText("刪除成功,刪除了:"+strDel);}else{panel.add(showInfo);showInfo.setText("請選擇要刪除的星座");}}} }完整代碼:
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener;import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField;public class Test extends JFrame {private JPanel panel=new JPanel();//面板private JComboBox cmb=new JComboBox();//下拉列表private JLabel label=new JLabel("添加新星座:");private JLabel showInfo=new JLabel();//標簽,用于顯示信息private JTextField jtf=new JTextField(16);//單行文本框,用于輸入信息private JButton buttonAdd=new JButton("新增");private JButton buttonDel=new JButton("刪除");public Test(){JFrame frame=new JFrame("選擇你的星座");cmb.addItem("水瓶座");cmb.addItem("仙女座");cmb.addItem("巨蟹座");cmb.addItem("白羊座");cmb.addItem("北斗七星座");cmb.addItem("老幼弱殘座");cmb.addItem("水泥座");panel.add(cmb);panel.add(label);panel.add(jtf);panel.add(buttonAdd);panel.add(buttonDel);frame.add(panel);buttonAdd.addActionListener(new MyActionListener());//“添加”按鈕事件buttonDel.addActionListener(new MyActionListener());//"刪除"按鈕事件cmb.addItemListener(new MyItemListener());//下拉列表事件frame.setBounds(300,200,600,200);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}//監聽選中事件class MyItemListener implements ItemListener{@Overridepublic void itemStateChanged(ItemEvent e) {String str=e.getItem().toString();panel.add(showInfo);showInfo.setText("您選擇的星座是"+str);}}//監聽添加和刪除按鈕事件class MyActionListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {String command=e.getActionCommand();//添加按鈕處理if(command.equals("新增")){if(jtf.getText().length()!=0){cmb.addItem(jtf.getText());panel.add(showInfo);showInfo.setText("添加成功,新增了"+jtf.getText());}else{panel.add(showInfo);showInfo.setText("請輸入要添加星座");}}//刪除按鈕處理if(command.equals("刪除")){if(cmb.getSelectedIndex()!=-1){//先獲得要刪除的值String strDel=cmb.getSelectedItem().toString();cmb.removeItem(strDel);panel.add(showInfo);showInfo.setText("刪除成功"+strDel);}else{panel.add(showInfo);showInfo.setText("請選擇要刪除的星座");}}}}public static void main(String[] args) {new Test();}}(5) 運行程序,在下拉列表中會出現 4 個選項,選擇其中的“獅子座”項,此時顯示效果如圖 1 所示。
(6) 從下拉列表中選擇“獅子座”項,再單擊“刪除”按鈕即可刪除該項,如圖 2 所示。
(7) 在文本框中輸入要添加的項并單擊“新增”按鈕,在下拉列表中將出現添加的項。圖 3 所示為添加“處女座”后的效果。
總結
以上是生活随笔為你收集整理的14、Java Swing星座选择器界面的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 13、Java Swing事件监听:事件
- 下一篇: 15、Java Swing JSlide