Day 4 狂神说Java基础笔记(面向对象15-17,异常01-03,GUI01-09)

一、面向对象

15-抽象类

abstract:所有方法必须由非抽象的子类实现;不能new
抽象类可以写普通的方法,抽象方法必须在抽象类中。
存在构造器吗,可以存在:https://blog.csdn.net/JW614718/article/details/88410215

16-接口

interface implements
接口可以多继承
接口中的所有方法都是public abstract
接口中的常量默认为 public static final
不能被实例化,没有构造方法。

17-N种内部类
  • 成员内部类:获得外部类的私有属性;outer.new Inner();
    静态内部类:无法访问非静态
  • 一个java类中可以有多个class类,但是只能有一个public class
  • 局部内部类:
  • 匿名内部类:没有名字初始化类,不用将实例保存在变量中

二、异常

01-Error和Exception

error Java虚拟机生成并抛出
exception

02-抛出和捕获异常

try{代码块}
catch(xxException e//想要捕获的异常类型){异常处理}
catch(Throwable t){由小变大}
finally{处理善后工作,一定执行//可选 IO流资源关闭}
throw
throws

ctrl+alt+t//自动包裹

03-自定义*

三、总结

GUI

01,02,Swing/AWT
03-frame
04-panel

不能单独存在
布局
frame.add(panel);
frame只有一个,component由很多
23种模式
适配器模式

public class Hello {
 public static void main(String[] args){
 Frame frame=new Frame("给🐖的游戏"); 
 frame.setVisible(true);
 frame.setSize(400, 400);
 frame.setBackground(Color.darkGray);
 frame.setLocation(200, 200);
 frame.setLayout(null);
 
 Panel panel=new Panel();
 panel.setBounds(50,50,100,100);
 panel.setBackground(new Color(193, 15, 60));
 frame.add(panel);
 frame.addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {//windowclosing
  //无法关闭的原因?
   System.exit(0);  
  }
 });
 } 
}
05-三种布局

alt+enter补全new语句

  • 流式布局Flowlayout
frame.setLayout(new FlowLayout(FlowLayout.LEFT));
  • 东西南北中布局
frame.add(button,BorderLayout.EAST);
  • 表格布局
 frame.setLayout(new GridLayout(2,2));
06-练习
import java.util.Scanner;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Hello {
 public static void main(String[] args){
 Frame frame=new Frame("给🐖的游戏"); 
 frame.setVisible(true);
 frame.setSize(600, 600);
 frame.setBackground(Color.darkGray);
 frame.setLocation(0, 0);
 Panel panel1=new Panel();
 Panel panel2=new Panel();
 Panel panel3=new Panel();
 Panel panel4=new Panel();
 Panel panel5=new Panel(); 
 panel1.setBounds(0,0,100,600);
 panel2.setBounds(100,0,400,600);
 panel3.setBounds(500,0,100,600);
 panel4.setBounds(0,300,100,300);
 panel5.setBounds(0,0,100,300); 
 Button button1=new Button("button1");
 Button button2=new Button("button2");
 Button button3=new Button("button3");
 Button button4=new Button("button4");
 Button button5=new Button("button5");
 Button button6=new Button("button6");
 Button button7=new Button("button7");
 Button button8=new Button("button8");
 Button button9=new Button("button9");
 Button button10=new Button("button10"); 
 panel1.setBackground(new Color(255, 0, 0));
 panel2.setBackground(new Color(0, 255, 0));
 panel3.setBackground(new Color(0, 0, 255));
 panel4.setBackground(new Color(0, 255, 255));
 panel5.setBackground(new Color(255, 0, 255)); 
 frame.setResizable(false);
 panel1.add(button1);
 panel1.add(button2); 
 panel4.add(button3);
 panel4.add(button4); 
 panel5.add(button5);
 panel5.add(button6); 
 panel5.add(button7);
 panel5.add(button8); 
 panel3.add(button9);
 panel3.add(button10); 
 panel2.setLayout(new GridLayout(2,1));
 panel2.add(panel4);
 panel2.add(panel5);
 panel1.setLayout(new GridLayout(2,1)); 
 panel3.setLayout(new GridLayout(2,1));
 panel4.setLayout(new GridLayout(2,1));
 panel5.setLayout(new GridLayout(2,2)); 
 frame.add(panel1);
 frame.add(panel2);
 frame.add(panel3);
 frame.addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
   System.exit(0);  
  }
 });
 } 
}

还有问题,btn9,10不显示

07-事件监听
import java.util.Scanner;
import javax.swing.JFrame;
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 Hello {
 public static void main(String[] args){
 Frame frame=new Frame("给🐖的游戏"); 
 frame.setVisible(true);
 frame.setSize(600, 600);
 frame.setBackground(Color.darkGray);
 frame.setLocation(0, 0);
 Button button=new Button("bian");
 frame.add(button);
 MyActionListenser myActionListenser=new MyActionListenser();
 button.addActionListener(myActionListenser);
 frame.addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
   System.exit(0);  
  }
 });
 } 
}
class MyActionListenser implements ActionListener{//事件监听
 @Override
 public void actionPerformed(ActionEvent var1) {
  // TODO Auto-generated method stub
  System.out.print("love ya!");
 } 
}
e.getActionCommand();//获得标题,事件共用
08-输入框事件监听

Textfield

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Hello {
 public static void main(String[] args){
// Frame frame=new Frame("给🐖的游戏"); 
  MyFrame myFrame=new MyFrame();
 } 
}
@SuppressWarnings("serial")
class MyFrame extends Frame{
 public MyFrame() {
  TextField textField=new TextField();
  add(textField);
  //监听这个文本框输入的文字
  MyActionListener myActionListener=new MyActionListener();
  textField.addActionListener(myActionListener);
  //隐藏
  textField.setEchoChar('*');
  setVisible(true);
  pack();
 }
}
class MyActionListener implements ActionListener{
 @Override
 public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  TextField field =(TextField) e.getSource();//获得一些资源
  System.out.println(field.getText()); 
  field.setText("");
 } 
}
09- 简易计算器
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Hello {
 public static void main(String[] args){
// Frame frame=new Frame("给🐖的游戏"); 
 @SuppressWarnings("unused")
 Calculator calculator=new Calculator();
 }
}
class Calculator extends Frame{
 public Calculator() {
  // TODO Auto-generated constructor stub  
  //三个文本框
  TextField num1=new TextField(10);//最大字符数
  TextField num2=new TextField(10);//最大字符数
  TextField num3=new TextField(10);//最大字符数
  //一个按钮
  Button button=new Button("=");
  button.addActionListener(new MyListener(num1,num2,num3));
  //一个标签
  Label label=new Label("+");
  setLayout(new FlowLayout());
  add(num1);
  add(label);
  add(num2);
  add(button);
  add(num3);
  pack();
  setVisible(true);
 }
}
//监听器类
class MyListener implements ActionListener{
 private TextField num1,num2,num3;
 //获取三个变量
 public MyListener(TextField num1,TextField num2, TextField num3) {
  // TODO Auto-generated constructor stub
  this.num1=num1;
  this.num2=num2;
  this.num3=num3;
 }
 @Override
 public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  int n=Integer.parseInt(num1.getText())+Integer.parseInt(num2.getText());
  num3.setText(""+n);
  num1.setText("");
  num2.setText("");
 } 
}

改进:组合

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Hello {
 public static void main(String[] args){
// Frame frame=new Frame("给🐖的游戏"); 
 @SuppressWarnings("unused")
 Calculator calculator=new Calculator();
 }
}
class Calculator extends Frame{
 TextField num1,num2,num3;
 public Calculator() {
  num1=new TextField(10);//最大字符数
  num2=new TextField(10);//最大字符数
  num3=new TextField(10);//最大字符数
  Button button=new Button("=");
  Label label=new Label("+");
  //组件
  button.addActionListener(new MyListener(this));
  //组件需要加的监听器
  setLayout(new FlowLayout());
  add(num1);
  add(label);
  add(num2);
  add(button);
  add(num3);
  pack();
  setVisible(true);
  //一次性布局
 }
}
//监听器类
class MyListener implements ActionListener{
 Calculator calculator;
 //获取三个变量
 public MyListener(Calculator calculator) {
  // TODO Auto-generated constructor stub
  this.calculator=calculator;
 }
 @Override
 public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  int n=Integer.parseInt(calculator.num1.getText())+Integer.parseInt(calculator.num2.getText());
  calculator.num3.setText(""+n);
  calculator.num1.setText("");
  calculator.num2.setText("");
 } 
}

改进:完全面向对象,内部类;最大的好处就是直接访问外部类的属性和方法

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Hello {
 public static void main(String[] args){
// Frame frame=new Frame("给🐖的游戏"); 
 @SuppressWarnings("unused")
 Calculator calculator=new Calculator();
 }
}
class Calculator extends Frame{
 TextField num1,num2,num3;
 public Calculator() {
  num1=new TextField(10);//最大字符数
  num2=new TextField(10);//最大字符数
  num3=new TextField(10);//最大字符数
  Button button=new Button("=");
  Label label=new Label("+");
  //组件
  button.addActionListener(new MyListener());
  //组件需要加的监听器
  setLayout(new FlowLayout());
  add(num1);
  add(label);
  add(num2);
  add(button);
  add(num3);
  pack();
  setVisible(true);
  //一次性布局
 }
 //监听器类
 class MyListener implements ActionListener{
  public void actionPerformed(ActionEvent e) {
   // TODO Auto-generated method stub
   int n=Integer.parseInt(num1.getText())+Integer.parseInt(num2.getText());
   num3.setText(""+n);
   num1.setText("");
   num2.setText("");
  } 
 }
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值