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();
	}

}

在这里插入图片描述

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