先看第一部分完成的图
1.先做一个界面出来
public class JFrameDemo1 {
public static void main(String args[]) {
JFrame jf = new JFrame("第一个图形界面");
//加标题
jf.setTitle("第一个图形界面");
//默认坐标是0,0 左上角是原点
jf.setLocation(100, 100);
//设置尺寸
jf.setSize(500, 500);
//尺寸和坐标可以用一个方法来写 下面这句
//jf.setBounds(100, 100, 500, 500);
//前两个是坐标 后两个是页面的大小
//修改窗体图标
//自己下载好图片文件复制到src目录底下,然后再复制到ImageIcon里
jf.setIconImage(new ImageIcon("Login.png").getImage());
//设置关闭窗口关闭虚拟机
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可见
jf.setVisible(true);
}
}
2.做适合我们电脑屏幕的窗口(让它在屏幕正中显示)
public class JFrameDemo2 {
private static final int WIDTH=300;//窗口的宽
private static final int HEIGHT=300;//窗口的高
public static void main(String args[]) {
JFrame jf = new JFrame("第一个图形界面");
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
//得到屏幕的尺寸
int height=screenSize.height;
int width=screenSize.width;
//设置布局
jf.setBounds((width-WIDTH)/2,(height-HEIGHT)/2, WIDTH, HEIGHT);
//修改窗体图标
jf.setIconImage(new ImageIcon("Login.png").getImage());
//设置关闭窗口关闭虚拟机
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可见
jf.setVisible(true);
}
}
3.有了基本的窗体,下一步我们要在里面添加东西啦。
为了方便起见,我们把生成床体的代码放到一个方法中
initFrame()
package gui2;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.TexturePaint;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import com.sun.tools.jdeprscan.resources.jdeprscan;
public class JFrameDemo2 {
private static final int WIDTH = 300;
private static final int HEIGHT = 300;
public static void main(String args[])
{
//把创建窗体放到一个方法当中 然后去调用
JFrame jf = initFrame();
//创建一个按钮
JButton jb = new JButton("点我试试");
//把按钮添加到jframe
//边界布局
jf.add(jb,BorderLayout.SOUTH);//东南西北中五处可放
jf.setVisible(true);
}
public static JFrame initFrame()
{
JFrame jf = new JFrame("第一个图形界面");
//尺寸和坐标可以用一个方法来写
//前两个是坐标 后两个是页面的大小
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();//得到屏幕的尺寸
int height=screenSize.height;
int width=screenSize.width;
jf.setBounds((width-WIDTH)/2,(height-HEIGHT)/2, WIDTH, HEIGHT);
//修改窗体图标
jf.setIconImage(new ImageIcon("Login.png").getImage());
//设置关闭窗口关闭虚拟机
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可见
return jf;
}
}
下面介绍几种布局(简单概括)
1.边界布局
分为东西南北中
2.流式布局
从第一行开始,从中间开始布局
3.网格布局
首先需要明确网格的行数,列数,然后进行布局。
package gui2;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.TexturePaint;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import com.sun.tools.jdeprscan.resources.jdeprscan;
public class JFrameDemo3 {
private static final int WIDTH = 300;
private static final int HEIGHT = 300;
public static void main(String args[])
{
//把创建窗体放到一个方法当中 然后去调用
JFrame jf = initFrame();
//创建一个按钮
JButton jb = new JButton("点我试试");
JButton jb1 = new JButton("点我试试1");
JButton jb2 = new JButton("点我试试2");
//把按钮添加到jframe
//jf.add(jb,BorderLayout.SOUTH);//东南西北中五处可放
//流式布局
// jf.setLayout(new FlowLayout(FlowLayout.CENTER,10,10 ));
// jf.add(jb);
// jf.add(jb1);
// jf.add(jb2);
//网格布局
jf.setLayout(new GridLayout(2,2));
jf.add(jb);
jf.add(jb1);
jf.add(jb2);
jf.setVisible(true);
}
public static JFrame initFrame()
{
JFrame jf = new JFrame("第一个图形界面");
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();//得到屏幕的尺寸
int height=screenSize.height;
int width=screenSize.width;
jf.setBounds((width-WIDTH)/2,(height-HEIGHT)/2, WIDTH, HEIGHT);
//修改窗体图标
jf.setIconImage(new ImageIcon("Login.png").getImage());
//设置关闭窗口关闭虚拟机
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可见
return jf;
}
}
开始做这个图
package gui2;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.TexturePaint;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import com.sun.tools.jdeprscan.resources.jdeprscan;
import sun.awt.image.PixelConverter.Bgrx;
public class JPanelDemo1 {
private static final int WIDTH = 300;
private static final int HEIGHT = 300;
public static void main(String args[])
{
JFrame jf = initFrame();
//初始化一个窗体
jf.setLayout(new GridLayout(8,1));
//八列
//窗体采用网格布局
//==============用户名======================
JPanel jp1 = new JPanel();
//创建一个面板 面板默认是流式布局
JLabel label = new JLabel("请输入用户名;",new ImageIcon("Login.png"),JLabel.CENTER);
//设置LABLE的文字颜色
label.setForeground(Color.blue);
//文本框 输的地方
JTextField jtf = new JTextField(10);
jp1.add(label);
jp1.add(jtf);
//================end====================
//================密码====================
JPanel jp2 = new JPanel();
JLabel label2 = new JLabel("请输入密码;",new ImageIcon("Login.png"),JLabel.CENTER);
//文本框 输的地方
JPasswordField jpf = new JPasswordField(10);
jp2.add(label2);
jp2.add(jpf);
//================end=====================
//=================自我介绍(文本域)=================
JPanel jp3 = new JPanel();
JLabel lable3 = new JLabel("自我介绍");
JTextArea jta = new JTextArea(5, 30);
jta.setLineWrap(true);//设置这个输入文字才会换行
jp3.add(lable3);
jp3.add(jta);
//=================end====================
//=============Box
JPanel jp4 = new JPanel();
JLabel label4 = new JLabel("请选择编程语言");
JComboBox<String> box = new JComboBox<String>();
box.addItem("java");
box.addItem("python");
box.addItem("c");
box.addItem("c++");
box.addItem("swift");
jp4.add(label4);
jp4.add(box);
//===================
//=============CheckBox 多选
JPanel jp5 = new JPanel();
JLabel label5 = new JLabel("请选择你的爱好");
JCheckBox jcb1 = new JCheckBox("篮球");
JCheckBox jcb2 = new JCheckBox("足球");
JCheckBox jcb3 = new JCheckBox("排球");
JCheckBox jcb4 = new JCheckBox("网球");
jp5.add(label5);
jp5.add(jcb1);
jp5.add(jcb2);
jp5.add(jcb3);
jp5.add(jcb4);
//===================
//=============单选
JPanel jp6 = new JPanel();
JLabel label6 = new JLabel("请选择性别");
JRadioButton jrb1 = new JRadioButton("男");
JRadioButton jrb2 = new JRadioButton("女");
JRadioButton jrb3 = new JRadioButton("保密");
ButtonGroup bg = new ButtonGroup();//放到一个组里才能实现单选
bg.add(jrb1);
bg.add(jrb2);
bg.add(jrb3);
jp6.add(label6);
jp6.add(jrb1);
jp6.add(jrb2);
jp6.add(jrb3);
//===================
//============= 面板7
JPanel jp7 = new JPanel();
JLabel label7 = new JLabel("请选择头像");
JTextField jtf7 = new JTextField(10);
JButton btn = new JButton("选择头像");
jp7.add(label7);
jp7.add(jtf7);
jp7.add(btn);
//给按钮绑定事件 点击按钮执行下面的方法 (这是一个匿名内部类)
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JFileChooser jfile = new JFileChooser();//出现文件选项
int result = jfile.showOpenDialog(null);
//取消,没有选择任何文件CANCEL_OPTION
//打开,选择了文件APPROVE_OPTION
if(result == JFileChooser.APPROVE_OPTION) {
//选择了文件的话,将文件的路径显示在文本框中
String path = jfile.getSelectedFile().getAbsolutePath();
jtf7.setText(path);
}
}
});
//===================
//=============面板8
JPanel jp8 = new JPanel();
JButton regBtn = new JButton("---注册---");
regBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//我希望一点弹出一个对话框
// JOptionPane.showMessageDialog(null, "注册成功");
//我希望一个确认的框
// int i = JOptionPane.showConfirmDialog(null, "确认删除吗?");
// System.out.println(i);
//弹入一个输入的框
JOptionPane.showInputDialog(null);
}
});
jp8.add(regBtn);
//===================end
//把面板加入到窗体当中
jf.add(jp1);
jf.add(jp2);
jf.add(jp3);
jf.add(jp4);
jf.add(jp5);
jf.add(jp6);
jf.add(jp7);
jf.add(jp8);
jf.setVisible(true);
}
public static JFrame initFrame()
{
JFrame jf = new JFrame("第一个图形界面");
//加标题
//jf.setTitle("第一个图形界面");
//默认坐标是0,0 左上角是原点
// jf.setLocation(100, 100);
// //设置尺寸
// jf.setSize(500, 500);
//尺寸和坐标可以用一个方法来写
//前两个是坐标 后两个是页面的大小
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();//得到屏幕的尺寸
int height=screenSize.height;
int width=screenSize.width;
jf.setBounds((width-WIDTH)/2,(height-HEIGHT)/2, WIDTH, HEIGHT);
//修改窗体图标
jf.setIconImage(new ImageIcon("Login.png").getImage());
//设置关闭窗口关闭虚拟机
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可见
return jf;
}
}
实现事件的处理
以及adapt适配器的妙用
package gui5;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.TexturePaint;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
public class EventDemo3 {
private static final int WIDTH = 300;
private static final int HEIGHT = 300;
public static void main(String args[])
{
JFrame jf = initFrame();
JPanel jp = new JPanel();
JTextField jtf = new JTextField(100);
JButton jb = new JButton("点击一下");
jb.addMouseListener(new MouseAdapter() {
//本来有好几个监听事件 现在我只想要点击的监听 用适配器可以避免报错
@Override
public void mouseClicked(MouseEvent e) {
jp.setBackground(Color.BLUE);
};
} );
jtf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
char key = e.getKeyChar();
if(!(key>='0' || key<='9')) {
e.consume();//取消事件
}
System.out.println(key);
};
});
jp.add(jtf);
jp.add(jb);
jf.add(jp);
jf.setVisible(true);
}
public static JFrame initFrame()
{
JFrame jf = new JFrame("第一个图形界面");
//加标题
//jf.setTitle("第一个图形界面");
//默认坐标是0,0 左上角是原点
// jf.setLocation(100, 100);
// //设置尺寸
// jf.setSize(500, 500);
//尺寸和坐标可以用一个方法来写
//前两个是坐标 后两个是页面的大小
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();//得到屏幕的尺寸
int height=screenSize.height;
int width=screenSize.width;
jf.setBounds((width-WIDTH)/2,(height-HEIGHT)/2, WIDTH, HEIGHT);
//修改窗体图标
jf.setIconImage(new ImageIcon("Login.png").getImage());
//设置关闭窗口关闭虚拟机
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可见
return jf;
}
}