常用佈局:
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();
}
}