GUI知识

常用布局:

package 布局;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class 常用布局 {
	static void 流式布局() {
		JFrame.setDefaultLookAndFeelDecorated(true);// 设置默认的外观
		JFrame frame = new JFrame("登录窗口");// 创建窗口对象,设置标题
		// 设置窗口右上角的关闭按钮对应的行为
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 退出进程
		frame.setBounds(500, 500, 350, 200);
		// 添加组件
		// 设置流式布局
		frame.getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));// 左对齐,水平和垂直空隙
		JButton b1 = new JButton("1");
		b1.setSize(new Dimension(300, 230));// 设置无效
		frame.getContentPane().add(b1);
		frame.getContentPane().add(new JButton("2"));
		frame.getContentPane().add(new JButton("3"));
		frame.pack();
		frame.setVisible(true);
		frame.setResizable(false);// 固定大小
	}

	static void 网格布局() {
		JFrame.setDefaultLookAndFeelDecorated(true);// 设置默认的外观
		JFrame frame = new JFrame("登录窗口");// 创建窗口对象,设置标题
		// 设置窗口右上角的关闭按钮对应的行为
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 退出进程
		frame.setBounds(500, 500, 350, 200);
		// 添加组件
		// 1. 先确定几行几列
		// 设置网格布局
		frame.getContentPane().setLayout(new GridLayout(2, 3, 5, 5));// 2行,3列,空隙是5
		// 从网格(0,0)开始添加按钮
		for (int i = 0; i < 6; i++) {
			frame.getContentPane().add(new JButton("按钮" + i));
		}
		// 将按钮5设置为1个JLabel?
		JLabel label = new JLabel("文本");
		//Component c = frame.getContentPane().getComponent(4);
		frame.getContentPane().remove(4);// 可以直接用索引删除
		frame.getContentPane().add(label, 4);
		frame.setVisible(true);

	}
	static void 边界布局(){
		JFrame.setDefaultLookAndFeelDecorated(true);// 设置默认的外观
		JFrame frame = new JFrame("登录窗口");// 创建窗口对象,设置标题
		// 设置窗口右上角的关闭按钮对应的行为
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 退出进程
		frame.setBounds(500, 500, 350, 200);
		frame.getContentPane().setLayout(new BorderLayout());
		JButton b1=new JButton("东");
		JButton b2=new JButton("西");
		JButton b3=new JButton("南");
		JButton b4=new JButton("北");
		JButton b5=new JButton("中");
		b1.setPreferredSize(new Dimension(220,33));//设置按钮大小
		//按指定位置添加
		frame.getContentPane().add(b1,BorderLayout.EAST);
		frame.getContentPane().add(b2,BorderLayout.WEST);
		frame.getContentPane().add(b3,BorderLayout.SOUTH);
		frame.getContentPane().add(b4,BorderLayout.NORTH);
		frame.getContentPane().add(b5,BorderLayout.CENTER);
		frame.setVisible(true);
		
	}
	public static void main(String[] args) {
		// 流式布局();
		//网格布局();
		边界布局();
	}
}

事件:

public class 最简单的事件处理 {
	static void test(){
		JFrame.setDefaultLookAndFeelDecorated(true);// 设置默认的外观
		JFrame frame = new JFrame("窗口");// 创建窗口对象,设置标题
		// 设置窗口右上角的关闭按钮对应的行为
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 退出进程
		frame.setBounds(500, 500, 350, 200);
		JButton b1=new JButton("点我");
		b1.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				String text=b1.getText();
				b1.setText("按钮名称被更改");//调用方法不叫修改
				JOptionPane.showMessageDialog(null, "hello:"+text);
			}
		});
		frame.getContentPane().add(b1);
		frame.setVisible(true);
	}
	public static void main(String[] args) {
		test();
	}
}

登录注册窗口:

package course;

import java.awt.Color;

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

public class 登录窗口 {
	static void 登录(){
		JFrame.setDefaultLookAndFeelDecorated(true);//设置默认的外观
		JFrame frame=new JFrame("登录窗口");//创建窗口对象,设置标题
		//设置窗口右上角的关闭按钮对应的行为
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出进程
		frame.setBounds(500, 500, 350, 200);
		//通过子面板(容器)来实现登录窗口相关组件的添加
		JPanel paner=new JPanel();
		paner.setBackground(Color.yellow);
		frame.add(paner);//将面板添加到frame中
		addComponentToPaner(paner);
		frame.setVisible(true);
		
	}
	static void addComponentToPaner(JPanel panel){
		panel.setLayout(null);//默认边界布局,BorderLayout
		JLabel userLabel=new JLabel("用户名:");
		//设置位置
		userLabel.setBounds(10, 20, 80, 25);
		panel.add(userLabel);
		//文本框
		JTextField userText=new JTextField(20);//列数20
		userText.setBounds(100, 20, 160, 25);
		panel.add(userText);
		JLabel pwdLabel=new JLabel("密码:");
		pwdLabel.setBounds(10, 50, 80, 25);
		panel.add(pwdLabel);
		//密码输入框
		JPasswordField pwdText=new JPasswordField(20);//宽度20
		pwdText.setBounds(100, 50, 160, 25);
		panel.add(pwdText);
		//登录按钮
		JButton loginButton=new JButton("登录");
		loginButton.setBounds(100, 80, 80, 25);
		panel.add(loginButton);
	}
	public static void main(String[] args) {
		登录();
	}
}

在这里插入图片描述
添加数据,并且删除数据

public class GUIDemo {
	static void mainFrame() {
		JFrame.setDefaultLookAndFeelDecorated(true);// 设置默认的外观
		JFrame frame = new JFrame("窗口");// 创建窗口对象,设置标题
		// 设置窗口右上角的关闭按钮对应的行为
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 退出进程
		frame.setBounds(500, 500, 350, 200);

		// 设置布局
		frame.getContentPane().setLayout(new BorderLayout());
		// 二级面板
		JPanel p1_2 = new JPanel();
		JPanel p2_2 = new JPanel();

		// 设置p2的大小
		p2_2.setPreferredSize(new Dimension(350, 50));
		// p1_2.setBackground(Color.RED);
		// 添加二级面板到主面板中
		frame.getContentPane().add(p1_2, BorderLayout.CENTER);
		frame.getContentPane().add(p2_2, BorderLayout.SOUTH);

		// 在下面panel中添加button
		JButton b1 = new JButton("清空");
		JButton b2 = new JButton("添加记录");
		p2_2.add(b1);
		p2_2.add(b2);

		
		Object[] head={"学号","姓名","性别","成绩"};
		Object[][] data={{1,"king","男",89}};
		DefaultTableModel model = new DefaultTableModel(data,head); // 新建一个默认数据模型;
		JTable table=new JTable(model);
		p1_2.add(table);
		// 按钮添加监听事件
		b1.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				model.setRowCount(0);
				table.setModel(model);
			}
			
		});
		b2.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				model.addRow(new Object[]{4,"刘六","女",78});
				table.setModel(model);	
			}
			
		});
		
		frame.getContentPane().add(table.getTableHeader(),BorderLayout.NORTH);
		frame.getContentPane().add(table,BorderLayout.CENTER);
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		mainFrame();
	}
}

在这里插入图片描述

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