Day09

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

  1. frame.pack();

  2. 使用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);

kaungshengjava

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值