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