Gui
AWT 事件监听:
package com.ding1.lesson02;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestActionEvent {
public static void main(String[] args) {
Frame frame = new Frame();
Button button = new Button();
MyActionListener myActionListener = new MyActionListener();
//因为addActionListener需要一个ActionListener,所有我们需要构造一个
button.addActionListener(myActionListener);
frame.add(button,BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
widowsClose(frame);
}
private static void widowsClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("aa");
}
}
1使用MyActionListener实现ActionListener事件
因为addActionListener需要一个ActionListener,所有我们需要构造一个。
2.声明frame 并创建button.
Frame frame = new Frame();
Button button = new Button();
3.把按钮放入页面并按中摆期 frame.add(button,BorderLayout.CENTER);
-
frame.pack();
-
使用widowsClose(frame); (自己创建)调用方法
让窗口可以关闭:System.exit(0);
TestActiontwo (AWt)
package com.ding1.lesson02;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestActionTwo {
public static void main(String[] args) {
Frame frame = new Frame("开始停止");
Button b1 = new Button("start");
Button b2 = new Button("stop");
//可以显示定义会返回的命令
b2.setActionCommand("b2stop");
MyMonitor myMonitor = new MyMonitor();
b1.addActionListener(myMonitor);
b2.addActionListener(myMonitor);
frame.add(b1,BorderLayout.EAST);
frame.add(b2,BorderLayout.WEST);
frame.pack();
frame.setVisible(true);
}
}
class MyMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//e.getActionCommand()获得按钮信息
System.out.println("点击了"+e.getActionCommand());
if (e.getActionCommand().equals("start")){
}
}
}
1.给按钮附标签
Button b1 = new Button("start");
2.设置按钮监听,然后把按钮加入到frame按照边界布局
3.实现监听接口
class MyMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//e.getActionCommand()获得按钮信息
System.out.println("点击了"+e.getActionCommand());
//如果getActionCommand得到的对象是start那么执行if的语句
if (e.getActionCommand().equals("start")){
}
}
构造函数里可以直接这样写
setVisible(true);等语句
使用监听文本框
TextField textField = new TextField();
textField.addActionListener(事件对象);
事件对象的方法实现
Dialog (Swing)
package com.ding1.lesson04;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DialogDemo extends JFrame {
public DialogDemo() {
this.setVisible(true);
this.setSize(700,500);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//JFrame 容器
Container container = this.getContentPane();
//绝对布局
container.setLayout(null);
//按钮
JButton button = new JButton("点击弹出一个对话框");
button.setBounds(30,30,200,50);
//点击这个按钮弹出一个弹窗
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new MyDialogdemo();
}
});
container.add(button);
}
public static void main(String[] args) {
new DialogDemo();
}
}
//弹窗
class MyDialogdemo extends JDialog{
public MyDialogdemo() {
this.setVisible(true);
this.setBounds(100,100,500,500);
// this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container container = this.getContentPane();
container.setLayout(null);
container.add(new JLabel("学Java"));
}
}
声明DialogDemo类是JFrame的子类
1.创建一个容器:
Container container = this.getContentPane();
2.让窗口可以关闭并且结束运行程序
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
3.绝对布局:container.setLayout(null);
4.给按钮绑定一个事件让单机按钮之后触发这个事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new MyDialogdemo();
}
});
5.进行触发事件的实现
class MyDialogdemo extends JDialog{
public MyDialogdemo() {
this.setVisible(true);
this.setBounds(100,100,500,500);
Container container = this.getContentPane();
container.setLayout(null);
container.add(new JLabel("学Java"));
}
}
6.Dialog自带关闭不需要加关闭的实现
(套娃)
Icon (Swing)
package com.ding1.lesson04;
import javax.swing.*;
import java.awt.*;
//图标是接口,需要实现类 Frame继承
public class IconDemo extends JFrame implements Icon {
private int width;
private int height;
public IconDemo(){}
public IconDemo(int width,int height){
this.width = width;
this.height = height;
}
public void init(){
IconDemo iconDemo = new IconDemo(15,15);
JLabel label = new JLabel("icontest", iconDemo, SwingConstants.CENTER);
Container container = this.getContentPane();
container.add(label);
this.setVisible(true);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setBounds(200,200,500,500);
}
public static void main(String[] args) {
new IconDemo().init();
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
g.fillOval(x,y,width,height);
}
@Override
public int getIconWidth() {
return this.width;
}
@Override
public int getIconHeight() {
return this.height;
}
}
1.//图标是接口,需要实现类 Frame继承
public class IconDemo extends JFrame implements Icon
2.创建实例变量width和height
3.实现有参构造
4.声明inconDemo对象并给参数15,15
5.创建标签并且给标签图标和位置
JLabel label = new JLabel("icontest", iconDemo, SwingConstants.CENTER);
6.让窗口可以关闭
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
7.实现接口
把有参构造给变量的参数拿来做成图标大小
ImageIcon (Swing)
package com.ding1.lesson04;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class ImageIconDemo extends JFrame{
//获取图片地址
public ImageIconDemo(){
JLabel label = new JLabel("ImageIcon");
URL url = ImageIconDemo.class.getResource("1111.jpg");
ImageIcon imageIcon = new ImageIcon(url);
label.setIcon(imageIcon);
label.setHorizontalAlignment(SwingConstants.CENTER);
Container container = getContentPane();
container.add(label);
container.setBounds(200,200,700,500);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ImageIconDemo();
}
}
1.构造函数
之后声明标签并加名字
获取图片地址 不能用(bpm图片)
URL url = ImageIconDemo.class.getResource("1111.jpg");
2.之后使用ImageIcon把图片给对象
ImageIcon imageIcon = new ImageIcon(url);
3.把图片放给Icon 让图片居中
label.setIcon(imageIcon);
label.setHorizontalAlignment(SwingConstants.CENTER);
4.老样子
了解JFrame
package com.ding1.lesson04;
import javax.swing.*;
import java.awt.*;
public class JFrameDemo {
//init();初始化
public void init(){
JFrame jf = new JFrame("这是一个jframe");
jf.setVisible(true);
jf.setBounds(100,100,200,200);
jf.setBackground(Color.BLUE);
//设置文字
JLabel label = new JLabel("欢迎光临");
jf.add(label);
//容器实例化
//关闭事件
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JFrameDemo().init();
}
}
1.关闭事件没有awt这么麻烦了
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel
package com.ding1.lesson05;
import javax.swing.*;
import java.awt.*;
public class JPanelDemo extends JFrame {
public JPanelDemo() {
Container container = getContentPane();
//后面俩是间距
container.setLayout(new GridLayout(2,2,10,10));
JPanel panel1 = new JPanel(new GridLayout(1,3));
JPanel panel2 = new JPanel(new GridLayout(1,2));
JPanel panel3 = new JPanel(new GridLayout(1,3));
container.add(panel1);
container.add(panel2);
container.add(panel3);
panel1.add(new Button("1"));
panel1.add(new Button("1"));
panel1.add(new Button("1"));
setVisible(true);
setSize(500,500);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JPanelDemo();
}
}
1.看到container型用法
container.setLayout(new GridLayout(2,2,10,10));
这个语句前俩我们知道是行列,后俩是间隔
2.把Jpanel放在容器中
3.把按钮放在面板中.
滚动面板JScroll (Swing)
package com.ding1.lesson05;
import javax.swing.*;
import java.awt.*;
public class JScrollDemo extends JFrame {
public JScrollDemo(){
Container container = this.getContentPane();
//文本域 每行20
JTextArea textArea = new JTextArea(20, 50);
textArea.setText("学习Java");
container.add(textArea);
//Scroll面板
JScrollPane pane = new JScrollPane(textArea);
container.add(pane);
this.setVisible(true);
this.setBounds(100,100,300,350);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JScrollDemo();
}
}
1.学到了文本域可以写多行代码
//让文本域大小固定 (20,50)
JTextArea textArea = new JTextArea(20, 50);
让面板可以大小固定并滑动
JScrollPane pane = new JScrollPane(textArea);