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

在這裏插入圖片描述

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