【Swing】java swing 星座選擇器界面的實現

在瞭解各種基本組件的使用,以及常見事件的處理之後,本案例將綜合文本框按鈕下拉列表組件,實現一個星座選擇器程序。程序允許用戶在下拉列表中選擇一個自己的星座,如果不在列表中還可以增加星座,也可以刪除星座。實現過程如下。

(1) 創建一個 SampeDemo 類,在 main() 方法中調用它的構造方法。代碼如下:

package my;

public class SampeDemo
{

	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
        new SampeDemo();//調用構造方法
	}

}

(2) 創建 SampeDemo  構造方法完成窗口的創建,按鈕和下拉列表的添加,以及相應事件的監聽。具體代碼如下:

	private JPanel panel=new JPanel();
	private JComboBox cmb=new JComboBox();//創建JComboBox
	private JLabel label1=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(label1);
		panel.add(jtf);
		panel.add(buttonADD);
		panel.add(buttonDel);
		frame.add(panel);
		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
		{
		    @Override
		    public void itemStateChanged(ItemEvent e)
		    {
		    	// TODO Auto-generated method stub
		        String str=e.getItem().toString();
		        panel.add(showInfo);
		        showInfo.setText("您選擇的星座是:"+str);
		    }
		}

(4) 監聽增加和刪除按鈕的事件處理,實現代碼如下:

    // 監聽添加和刪除按鈕事件
	   buttonADD.addActionListener(new ActionListener()
		{
	        @Override
	        public 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("請輸入要添加星座");
	                }
	            }
	        }
		});
	     //刪除按鈕處理
	    buttonDel.addActionListener(new ActionListener()
	    {
                
				@Override
				public void actionPerformed(ActionEvent e)
				{
					// TODO Auto-generated method stub
					String command=e.getActionCommand();
		            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("請選擇要刪除的星座");
		                }
		            }
					
				}
	        });  

整體代碼實現如下:

package my;

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;

import com.sun.java.swing.plaf.motif.MotifButtonListener;

public class SampeDemo
{
	private JPanel panel=new JPanel();
	private JComboBox cmb=new JComboBox();//創建JComboBox
	private JLabel label1=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(label1);
		panel.add(jtf);
		panel.add(buttonADD);
		panel.add(buttonDel);
		frame.add(panel);
		cmb.addItemListener(new MyItemListener());//下拉列表的事件
		frame.setBounds(300,200,600,200);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    //監聽選中事件
		class MyItemListener implements ItemListener
		{
		    @Override
		    public void itemStateChanged(ItemEvent e)
		    {
		    	// TODO Auto-generated method stub
		        String str=e.getItem().toString();
		        panel.add(showInfo);
		        showInfo.setText("您選擇的星座是:"+str);
		    }
		}
	    // 監聽添加和刪除按鈕事件
	   buttonADD.addActionListener(new ActionListener()
		{
	        @Override
	        public 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("請輸入要添加星座");
	                }
	            }
	        }
		});
	     //刪除按鈕處理
	    buttonDel.addActionListener(new ActionListener()
	    {
                
				@Override
				public void actionPerformed(ActionEvent e)
				{
					// TODO Auto-generated method stub
					String command=e.getActionCommand();
		            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)
	{
		// TODO Auto-generated method stub
        new SampeDemo();//調用構造方法
	}

}

運行程序如下:

                              

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章