2020/4/14學習筆記day39

java-day39-GUI

GUI案例

計算器

package com.zzb.day39;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class MyFirstGUI extends JFrame implements ActionListener{
	private static final long serialVersionUID = 1L;
	
	private JPanel northPanel,centerPanel;
	private JTextField f1,f2,f3;
	private JLabel label1,label2;
	private JButton btn;
	private JScrollPane scrollPane;
	private JTextArea textArea;
	
	
	// 當前f1中的值
	private int v1;
	// 當前f2中的值
	private int v2;
	
	public MyFirstGUI() {
		setTitle("my-first-GUI");
		
		setBounds(300, 300, 500, 500);
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.initComponent();
		setVisible(true);
	}
	
	private void initComponent() {
		
		northPanel  = new JPanel();
		centerPanel = new JPanel();
		
		f1 = new JTextField(5);
		f2 = new JTextField(5);
		f3 = new JTextField(5);
		
		f1.setEnabled(false);
		f2.setEnabled(false);
		
		v1 = getNum();
		v2 = getNum();
		
		f1.setText(v1+"");
		f2.setText(v2+"");
		
		label1 = new JLabel("+");
		label2 = new JLabel("=");
		
		btn = new JButton("查看結果");
		
		textArea = new JTextArea();
		scrollPane = new JScrollPane(textArea);
		textArea.setEnabled(false);
		
		
		// 設置需要的佈局管理器
		centerPanel.setLayout(new BorderLayout());
		
		// 依次把組件添加到相應的容器中
		northPanel.add(f1);
		northPanel.add(label1);
		northPanel.add(f2);
		northPanel.add(label2);
		northPanel.add(f3);
		northPanel.add(btn);
		
		centerPanel.add(scrollPane);
		
		super.add(northPanel,BorderLayout.NORTH);
		super.add(centerPanel);
		
		
		//給組件添加事件監聽器
		btn.addActionListener(this);
		
	}
	
	private int getNum(int max) {
		int num = (int)(Math.random()*max)+1;
		return num;
	}
	private int getNum() {
		return this.getNum(100);
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		int v3 = 0;
		try {
			v3 = Integer.parseInt(f3.getText());
		} catch (NumberFormatException e1) {
			//System.out.println("輸入的結果必須是數字!!");
			textArea.append("輸入的結果必須是數字!!\n");
			f3.setText("");
			f3.requestFocus();
			return;
		}
		String str = null;
		
		if((v1+v2)==v3) {
			//答案正確
			str = "回答正確! "+v1+"+"+v2+"="+v3+"\n";
			v1 = getNum();
			v2 = getNum();
			f1.setText(v1+"");
			f2.setText(v2+"");
		}else {
			//答案錯誤
			str = "回答錯誤! "+v1+"+"+v2+"="+v3+", 正確答案爲 "+v1+"+"+v2+"="+(v1+v2)+"\n";
		}
		
		textArea.append(str);
		f3.setText("");
		f3.requestFocus();
		
	}
	
	public static void main(String[] args) {
		new MyFirstGUI();
	}
	
}

在這裏插入圖片描述

文本框和密碼

package com.zzb.day39;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/**
 * 文本框 密碼框
 */
public class JTextFieldTest {
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		JTextField field = new JTextField(10);
		JPasswordField passwordField = new JPasswordField(10);
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		java
		// 把組件依次放到容器中
		panel.add(field);
		panel.add(passwordField);
		
		frame.add(panel);
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

文本域 滾動面板

package com.zzb.day39;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/**
 * 文本域 滾動面板
 */
public class JScrollPaneTest {
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		JTextArea area = new JTextArea();
		area.setSize(100, 100);
		JScrollPane scrollPane = new JScrollPane(area);
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		panel.setLayout(new BorderLayout());//改變panel中的佈局管理器
		panel.add(scrollPane);
		
		frame.add(panel);
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

菜單欄 菜單 菜單項

package com.zzb.day39;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

/**
 * 菜單欄 菜單 菜單項
 */
public class JScrollBarTest {
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		JMenuBar bar = new JMenuBar();
		JMenu menu1 = new JMenu("系統");
		JMenu menu2 = new JMenu("工具");
		
		JMenuItem item1,item2,item3;
		item1 = new JMenuItem("啓動");
		item2 = new JMenuItem("暫停");
		item3 = new JMenuItem("關閉");
		menu1.add(item1);
		menu1.addSeparator();
		menu1.add(item2);
		menu1.addSeparator();
		menu1.add(item3);
		
		JMenuItem item4,item5,item6;
		item4 = new JMenuItem("截圖");
		item5 = new JMenuItem("刷新");
		item6 = new JMenuItem("複製");
		menu2.add(item4);
		menu2.addSeparator();
		menu2.add(item5);
		menu2.addSeparator();
		menu2.add(item6);
		
		bar.add(menu1);
		bar.add(menu2);
		
		
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		panel.add(bar);
		
		frame.add(panel);
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

進度條

package com.zzb.day39;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;

/**
 * 進度條
 */
public class JProgressBarTest {
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		JProgressBar bar = new JProgressBar();
		bar.setMinimum(0);
		bar.setMaximum(100);
		//設置進度條的初始值
		bar.setValue(20);
		//顯示當前進度條的狀態
		bar.setStringPainted(true);
		
		JButton btn = new JButton("下載");
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		panel.add(bar);
		panel.add(btn);
		
		frame.add(panel);
		
		btn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				int value = bar.getValue();
				if(value == 100) {
					System.out.println("已經下載完畢!!");
					return;
				}
				
				value = value + (int)(Math.random()*10);
				value = value >= 100? 100:value; 
				bar.setValue(value);
			}
		});
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

數據列表JList,可以單選也可以多選

package com.zzb.day39;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;

/**
 * 數據列表JList,可以單選也可以多選
 */
public class JListTest {
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		String[] arr = {"列表1","列表2","列表3","列表4","列表5"};
		JList<String> list = new JList<>(arr);
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		panel.add(list);
		
		frame.add(panel);
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

對話框

package com.zzb.day39;

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 對話框
 */
public class JDialogTest {
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		JButton btn = new JButton("OK");
		
		//參數1	對話框屬於哪個窗口
		//參數2	對話框的標題
		//參數3	對話框的模式
		JDialog dialog = new JDialog(frame,"對話框",true);
		dialog.setBounds(400, 400, 300, 300);
		dialog.setLayout(new FlowLayout());//設置對話框的佈局管理器
		dialog.add(btn);//把按鈕放到對話框中
//		dialog.setVisible(true);
		
		
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		JButton show = new JButton("顯示對話框");
		panel.add(show);
		
		frame.add(panel);
		
//		show.addActionListener(new ActionListener() {
//			@Override
//			javapublic void actionPerformed(ActionEvent e) {
//				dialog.setVisible(true);
//			}
//		});
		//給按鈕show添加事件處理,用戶一點擊按鈕,就調指定代碼
		show.addActionListener( e -> dialog.setVisible(true) );
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

畫布

package com.zzb.day39;

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 畫布
 */
public class CanvasTest {
	
	private static int x1;//記錄上一次拖拽時候的座標
	private static int y1;//記錄上一次拖拽時候的座標
	private static int x2;//記錄本次   拖拽時候的座標
	private static int y2;//記錄本次   拖拽時候的座標
	
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		Canvas canvas = new Canvas() {

			private static final long serialVersionUID = 1L;

			@Override
			public void paint(Graphics g) {
				g.drawLine(0, 0, panel.getWidth(), panel.getHeight());
			}
			
		};
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		panel.setLayout(new BorderLayout());//設置panel的佈局管理器
		panel.add(canvas);
		
		frame.add(panel);
		
		
		
		// 給畫布添加事件監聽器,監聽鼠標在畫布中拖拽的操作
		// 鼠標一旦除非這個拖拽操作,監聽器就會捕獲這個事件對象e
		// 並且調用指定方法,進行事件處理
		// MouseMotionListener只能監聽鼠標拖拽和移動
		canvas.addMouseMotionListener(new MouseAdapter() {
			
			private Graphics g;
			@Override
			public void mouseDragged(MouseEvent e) {
				// 獲取鼠標當前觸發事件的時候所在位置的座標
				
				// x1 y1 保存上一次的座標
				x1 = x2;
				y1 = y2;
				
				//x2 y2 一直都是當前的最新座標
				x2 = e.getX();
				y2 = e.getY();
				
				//System.out.println("當前鼠標拖拽時的座標:("+x+","+y+")");
				if(g == null) {
					g = canvas.getGraphics();
				}
				g.setColor(Color.RED);
				//g.fillOval(x, y, 10, 10);
				g.drawLine(x1, y1, x2, y2);
			}
		});
		
		// MouseListener可以監聽鼠標的按下去事件
		canvas.addMouseListener(new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent e) {
				//鼠標按下之後,獲取當前的初始座標,默認初始座標(x1,y1) 和 (x2,y2) 相同
				x1 = x2 = e.getX();
				y1 = y2 = e.getY();
			}
		});
		
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

網格佈局管理器

package com.zzb.day39;

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 網格佈局管理器
 */
public class GridLayoutTest {
	
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		JButton[] btns = new JButton[9];
		for(int i=1;i<=9;i++) {
			btns[i-1] = new JButton(""+i);
		}
		
		
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		// 注意,JPanel默認就是流式佈局管理器
		panel.setLayout(new GridLayout(3,3));//設置panel的佈局管理器
		
		for(JButton btn : btns) {
			panel.add(btn);
		}
		
		// 注意,JFrame默認就是邊際佈局管理器
		frame.add(panel);
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

流式佈局管理器

package com.zzb.day39;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 流式佈局管理器
 */
public class FlowLayoutTest {
	
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		JButton[] btns = new JButton[50];
		for(int i=1;i<=50;i++) {
			String str = i<10? "0"+i : ""+i;
			btns[i-1] = new JButton(str);
		}
		
		
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		// 注意,JPanel默認就是流式佈局管理器
		//panel.setLayout(new FlowLayout());//設置panel的佈局管理器
		
		for(JButton btn : btns) {
			panel.add(btn);
		}
		
		// 注意,JFrame默認就是邊際佈局管理器
		frame.add(panel);
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

卡片佈局管理器

package com.zzb.day39;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 卡片佈局管理器
 */
public class CardLayoutTest {
	
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		JPanel northPanel = new JPanel();
		
		// 組件
		JPanel[] panels = new JPanel[4];
		panels[0] = new JPanel();
		panels[0].setBackground(Color.RED);
		
		panels[1] = new JPanel();
		panels[1].setBackground(Color.BLACK);
		
		panels[2] = new JPanel();
		panels[2].setBackground(Color.BLUE);
		
		panels[3] = new JPanel();
		panels[3].setBackground(Color.GREEN);
		
		JButton btn1,btn2,btn3,btn4;
		
		btn1 = new JButton("RED");
		btn2 = new JButton("BLACK");
		btn3 = new JButton("BLUE");
		btn4 = new JButton("GREEN");
		
		JButton[] btns = new JButton[4];
		btns[0] = btn1;
		btns[1] = btn2;
		btns[2] = btn3;
		btns[3] = btn4;
		
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		// 注意,JPanel默認就是流式佈局管理器
		
		northPanel.add(btn1);
		northPanel.add(btn2);
		northPanel.add(btn3);
		northPanel.add(btn4);
		
		final CardLayout layout = new CardLayout();
		panel.setLayout(layout);//設置panel的佈局管理器
		
		panel.add("RED",panels[0]);
		panel.add("BLACK",panels[1]);
		panel.add("BLUE",panels[2]);
		panel.add("GREEN",panels[3]);
		
		
		// 注意,JFrame默認就是邊際佈局管理器
		frame.add(northPanel,BorderLayout.NORTH);
		frame.add(panel);
		
		
		panel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				layout.next(panel);
//				layout.show(panel, "a4");
			}
		});
		
		
		for(JButton btn : btns) {
			btn.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					String value = btn.getText();
					layout.show(panel, value);
				}
			});
		}
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述
在這裏插入圖片描述

邊際佈局管理器

package com.zzb.day39;

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 邊際佈局管理器
 */
public class BorderLayoutTest {
	
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		JButton northBtn,southBtn,westBtn,eastBtn,centerBtn;
		northBtn 	= new JButton("north");
		southBtn 	= new JButton("south");
		westBtn 	= new JButton("west");
		eastBtn 	= new JButton("east");
		centerBtn 	= new JButton("center");
		
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		panel.setLayout(new BorderLayout());//設置panel的佈局管理器
		panel.add(northBtn,BorderLayout.NORTH);java
		panel.add(southBtn,BorderLayout.SOUTH);
		panel.add(westBtn ,BorderLayout.WEST);
		panel.add(eastBtn ,BorderLayout.EAST);
		//注意,不指定位置,默認就是存放到center中間的空間
		//panel.add(centerBtn);
		panel.add(centerBtn,BorderLayout.CENTER);
		
		frame.add(panel);
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

自定義佈局管理器

package com.zzb.day39;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 
 */
public class MyLayoutTest {
	
	public static void main(String[] args) {
		
		// 容器
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		
		// 組件
		JButton btn = new JButton("hello");
		btn.setBounds(0, 0, 100, 30);
		
		// 設置容器基本屬性
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		// 把組件依次放到容器中
		panel.setLayout(null);//把panel中的佈局管理器設置爲null
		panel.add(btn);
		
		frame.add(panel);
		
		btn.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				int x = (int)(Math.random()*400);
				int y = (int)(Math.random()*400);
				btn.setLocation(x, y);
			}
		});
		
		
		// 設置主容器的可見性
		frame.setVisible(true);
		
	}
}

在這裏插入圖片描述

事件監聽1

package com.zzb.day39;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyJFrameTest1 {
	//聲明用到的容器
	private JFrame frame;
	private JPanel panel;
	
	//聲明用到的組件
	private JButton button;
	
	
	//初始化主容器並且設置基本的屬性
	public MyJFrameTest1() {
		frame = new JFrame("我的GUI");
		frame.setBounds(300, 300, 500, 500);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.initComponent();
		frame.setVisible(true);
	}
	
	//初始化其他組件
	private void initComponent() {
		
		//1 創建容器和組件對象
		panel = new JPanel();
		
		button = new JButton("OK");
		
		//2 設置容器的佈局管理器,如果使用容器默認的佈局管理器,則可以不寫這一步
		
		//3 把組件依次存放到對應容器中
		panel.add(button);
		
		frame.add(panel);
		
		//4 給組件添加事件監聽器(可選)
		
		button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println("OK");
			}
		});
		
	}
	
	//創建當前類對象
	public static void main(String[] args) {
		new MyJFrameTest1();
	}
}

事件監聽2

package com.zzb.day39;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyJFrameTest2 extends JFrame{
	private static final long serialVersionUID = 1L;
	
	//聲明用到的容器
	private JPanel panel;
	
	//聲明用到的組件
	private JButton button;
	
	
	//初始化主容器並且設置基本的屬性
	public MyJFrameTest2() {
		super("我的GUI");
		super.setBounds(300, 300, 500, 500);
		super.setResizable(false);
		super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.initComponent();
		super.setVisible(true);
	}
	
	//初始化其他組件
	private void initComponent() {
		
		//1 創建容器和組件對象
		panel = new JPanel();
		
		button = new JButton("OK");
		
		//2 設置容器的佈局管理器,如果使用容器默認的佈局管理器,則可以不寫這一步
		
		//3 把組件依次存放到對應容器中
		panel.add(button);
		
		super.add(panel);
		
		//4 給組件添加事件監聽器(可選)
		
		button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println("OK");
			}
		});
		
	}
	
	//創建當前類對象
	public static void main(String[] args) {
		new MyJFrameTest2();
	}
}

事件監聽3

package com.zzb.day39;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

// MyJFrameTest3繼承了JFrame,那麼這個MyJFrameTest3就可以當做前一個窗口來使用
// MyJFrameTest3同時有實現了監聽器接口,那麼MyJFrameTest3就可以當做一個監聽器來使用
public class MyJFrameTest3 extends JFrame implements ActionListener{
	private static final long serialVersionUID = 1L;
	
	//聲明用到的容器
	private JPanel panel;
	
	//聲明用到的組件
	private JButton button;
	
	
	//初始化主容器並且設置基本的屬性
	public MyJFrameTest3() {
		super("我的GUI");
		super.setBounds(300, 300, 500, 500);
		super.setResizable(false);
		super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.initComponent();
		super.setVisible(true);
	}
	
	//初始化其他組件
	private void initComponent() {
		
		//1 創建容器和組件對象
		panel = new JPanel();
		
		button = new JButton("OK");
		
		//2 設置容器的佈局管理器,如果使用容器默認的佈局管理器,則可以不寫這一步
		
		//3 把組件依次存放到對應容器中
		panel.add(button);
		
		super.add(panel);
		
		//4 給組件添加事件監聽器(可選)
		
		button.addActionListener(this);
		
	}
	
	
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("OK");
	}
	
	
	//創建當前類對象
	public static void main(String[] args) {
		new MyJFrameTest3();
	}

}

在這裏插入圖片描述

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