GUI

 

 

 

东南西北中布局

 

 

 

 

 

 

 

 

 

 

 

 

1.单实现一个接口,必须重写接口中的方法 (如果接口的方法和Object中的方法一样例外) 2.继承一个抽象类,必须重写抽象类中的抽象方法 (如果抽象类中的方法和Object中的方法一样例外) 3.继承了一个父类,当父类的方法无法满足子类需要时, 重写从父类继承过来的方法

重写方法:方法名必须一致, 而且必须保证保证参数类型,参数个数和返回类型一样 当然返回类型是对象类型时,重写方法返回类型可以是对象的子类类型 重写的方法访问权限不能更小,不能抛出更大的已检测异常,可以不抛 (要注意:父类没有抛已检测异常,子类就不能抛或者只能抛运行时异常)

package com.wl;

import sun.reflect.generics.visitor.Visitor;
//计算机
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

public class TextCalculator {
   public static void main(String[] args) {
     new Calculator();

  }
}
class Calculator extends Frame{
   public Calculator(){
       //三个文本框
       TextField num1= new TextField(10);
       TextField num2= new TextField(10);
       TextField num3= new TextField(20);
       //一个按钮
       Button button = new Button("=");
       button.addActionListener(new MyCalculatorListener(num1,num2,num3));
       //一个标签
       Label label = new Label("+");
       //布局
       pack();
       setLayout(new FlowLayout());
       setVisible(true);
       setBounds(700,300,700,300);

       addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
       add(num1);
       add(label);
       add(num2);
       add(button);
       add(num3);


  }
}
class MyCalculatorListener implements ActionListener{
   TextField num1,num2,num3;
   public MyCalculatorListener(TextField num1,TextField num2,TextField num3){
       this.num1=num1;
       this.num2=num2;
       this.num3=num3;
  }
   @Override
   public void actionPerformed(ActionEvent e) {
       int i=Integer.parseInt( num1.getText());
       int i2=Integer.parseInt( num2.getText());

       num3.setText(""+(i+i2));
       num1.setText("");
       num2.setText("");



  }
}

完全改造为面向对象写法

package com.wl;

import sun.reflect.generics.visitor.Visitor;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

public class TextCalculator {
   public static void main(String[] args) {
       new Calculator().contFrame();

  }
}

class Calculator extends Frame {
   TextField num1, num2, num3;

   public void contFrame() {
       num1 = new TextField(10);
       num2 = new TextField(10);
       num3 = new TextField(20);
       Button button = new Button("=");
       button.addActionListener(new MyCalculatorListener(this));
       //一个标签
       Label label = new Label("+");
       //布局
       pack();
       setLayout(new FlowLayout());
       setVisible(true);
       setBounds(700, 300, 700, 300);

       addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
       add(num1);
       add(label);
       add(num2);
       add(button);
       add(num3);


  }
}

class MyCalculatorListener implements ActionListener {
   //获取计算器这个对象
   Calculator calculator1 = null;


   public MyCalculatorListener(Calculator calculator) {
       this.calculator1 = calculator;
  }

   @Override
   public void actionPerformed(ActionEvent e) {
       int n1 = Integer.parseInt(calculator1.num1.getText());
       int n2 = Integer.parseInt(calculator1.num2.getText());
       calculator1.num3.setText("" + (n1 + n2));
       calculator1.num1.setText("");
       calculator1.num2.setText("");
  }
}

优化内部类(最大的好处是可以畅通无阻的访问外部的属性和方法)

package com.wl;

import sun.reflect.generics.visitor.Visitor;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

public class TextCalculator {
   public static void main(String[] args) {
       new Calculator().contFrame();

  }
}

class Calculator extends Frame {
   TextField num1, num2, num3;

   public void contFrame() {
       num1 = new TextField(10);
       num2 = new TextField(10);
       num3 = new TextField(20);
       Button button = new Button("=");
       button.addActionListener(new MyCalculatorListener());


       //一个标签
       Label label = new Label("+");
       //布局
       pack();
       setLayout(new FlowLayout());
       setVisible(true);
       setBounds(700, 300, 700, 300);

       addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
       add(num1);
       add(label);
       add(num2);
       add(button);
       add(num3);




  }

   private class MyCalculatorListener implements ActionListener {
       public void actionPerformed(ActionEvent e) {
           int n1 = Integer.parseInt(num1.getText());
           int n2 = Integer.parseInt(num2.getText());
           num3.setText("" + (n1 + n2));
           num1.setText("");
           num2.setText("");
      }
  }
}

鼠标监听事件 模拟画图工具

package com.wl;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Iterator;

public class TestMousetListener {
   public static void main(String[] args) {
       new MyFrame("画图");
  }

}

class MyFrame extends Frame {
   ArrayList points;

   public MyFrame(String title) {
       super(title);
       setBounds(500, 500, 300, 300);
       points = new ArrayList<>();
       this.addMouseListener(new MymouseListener());//鼠标监听器正对这个窗口
       setVisible(true);
//关闭窗口
       addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }

   @Override//画画监听鼠标事件
   public void paint(Graphics g) {
       Iterator iterator = points.iterator();
       while (iterator.hasNext()) {
           Point point = (Point) iterator.next();
           g.setColor(Color.YELLOW);
           g.fillOval(point.x, point.y, 10, 10);
      }
  }
​//添加一个点到界面上
   public void addPaint(Point point) {
       points.add(point);
  }

   private class MymouseListener extends MouseAdapter {
       @Override //获取鼠标按压
       public void mousePressed(MouseEvent e) {
           MyFrame myframe = (MyFrame) e.getSource();
           //这个我们在点击的时候就会获得一个点
           myframe.addPaint(new Point(e.getX(), e.getY()));//添加鼠标的点
           myframe.repaint();//每次点击都需要刷新重新画一遍
      }

  }

}

 

 

 

swing

package com.wl.title;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class DialogDemo extends JFrame {
   public void DialogDemo(){
       setTitle("sssss");
       setVisible(true);
       setBounds(200,200,200,200);
       setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
       Container container=this.getContentPane();//jframe放东西的容器
       container.setLayout(null);//绝对布局
       JButton button=new JButton("点击这个按钮----");//按钮
       button.setBounds(300,300,300,30);
       container.add(button);
       button.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
               new MyDialog();

          }
      });


  }

   public static void main(String[] args) {
       new DialogDemo().DialogDemo();

  }
   class MyDialog extends JDialog{
       public MyDialog() {
           setTitle("ssssssssswwwww");
           setVisible(true);
           setBounds(100,100,100,100);
           Container container=new Container();
           container.setLayout(null);

           container.setLayout(null);
           container.add(new Label("zheshigeshenme"));

      }
  }
}

imageicon标签

package com.wl.title;


import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class ImageIconDemo extends JFrame {
   public ImageIconDemo(){
       JLabel jLabel=new JLabel("ImageIcon");
       URL url=ImageIconDemo.class.getResource("tx.jpg");
       ImageIcon imageIcon=new ImageIcon(url);
       jLabel.setIcon(imageIcon);
       jLabel.setHorizontalAlignment(SwingConstants.CENTER);
       Container container=getContentPane();
       container.add(jLabel);
       setVisible(true);
       setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
       setBounds(20,20,20,20);
  }
   public static void main(String[] args) {
       new ImageIconDemo();

  }
}

 

posted @ 2021-10-30 17:01  爱笙灬  阅读(54)  评论(0)    收藏  举报