编程第三周的日常<二>

接口与多态

接口

  • 一种特殊的类,是一种抽象类的延伸。
  • 接口之间允许继承而且允许多重继承---一个接口可以继承多个接口。
  • 接口只写方法就可以了。
  • 接口中定义的方法必须被定义为public或abstract形式,其他修饰权限不被Java编译器认可。
  • 接口是可以多实现的:因为接口中的方法都是抽象的,都没有实现,在创建子类对象并调用该重写的抽象方法时,很明显就是调用重写之后的方法,不会出现调用的不确定性。
  • 注意:类与类之间是继承关系 ,通过继承可以得到继承体系的基本功能。接口与接口之间是实现关系,通过实现接口可以得到继承体系之外的功能。

实例

  • 一个简单的音乐家的接口,写和音乐家相关的方法(弹钢琴和拉小小提琴)。
    public interface Musician {
    void playPiano();
    void palyViolin();
    }

窗口的实现

  • 1、创建一个类去继承JFrame这个父类。

  • 2、在该类的构造函数中对窗口的一些基本属性进行初始化操作。
    public MyFrame() { // 构造函数 窗口的初始化。
    this.setSize(300, 200); // 窗口大小的设置
    this.setResizable(false); // 定义窗口大小是否被改变。
    this.setLocationRelativeTo(null); // 窗口的放置位置。
    this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 关闭即退出。
    this.setLayout(null); // 不要布局管理器
    }

  • 3、在窗口上添加文本组件
    JTextField jTextField = new JTextField("你好瓜",90);
    jTextField.setFont(new Font("楷体",Font.CENTER_BASELINE ,20));
    jTextField.setBounds(50, 50, 200, 80);
    this.add(jTextField);

  • 4、在窗口上添加标签组件
    JLabel jLabel = new JLabel("傻不傻");
    jLabel.setFont(new Font("楷体", Font.BOLD, 18));
    jLabel.setBounds(225,100, 200, 600);
    JCheckBox jCheckBox = new JCheckBox("1");
    jCheckBox.setBounds(225,100, 200, 50);
    this.add(jCheckBox);

  • 5、在窗口上添加按钮组件并创建按钮的事件监听器
    JButton jButton = new JButton("按下有惊喜");
    jButton.setFont(new Font("楷体", Font.BOLD, 16));
    jButton.setForeground(Color.BLUE);
    jButton.setBackground(Color.RED);
    jButton.setBounds(225, 300, 200, 50);
    this.add(jButton);
    jButton.addActionListener(e -> {
    JOptionPane.showMessageDialog(null, "你好傻!!"); // 消息提示面板

      });
    
  • 6、窗口上Timer的创建与应用
    Timer timer = new Timer(10, e->{
    for (int i = 0; i < total; i++) {
    SmallBall smallball = ballarray[i];
    smallball.move();
    repaint(); //回调paint()方法,即改变x,y值后再重新渲染一次。} }); timer.start();

  • 7、双缓存让窗口上的动画更加的流畅
    private BufferedImage image = new BufferedImage(700, 700, 1);
    public void paint(Graphics g) {
    // TODO Auto-generated method stub
    Graphics otherg = image.getGraphics();
    super.paint(otherg);
    // otherg.setColor(Color.BLUE);
    // otherg.fillOval(x<700?x:700-(x-700), y<700?y:700-(y-700), 40, 40);
    for (int i = 0; i < total; i++) {
    SmallBall smallball = ballarray[i];
    smallball.draw(otherg);
    }
    g.drawImage(image, 0, 0, null);
    }

  • 8、随机获得颜色

    public Color randomColor() {
    int red = (int) (Math.random() * 256);
    int green = (int) (Math.random() * 256);
    int blue = (int) (Math.random() * 256);
    return new Color(red, green, blue);
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,766评论 0 33
  • 第一阶段java基础复习 1.软件开发基础 1.1开发软件的目的 提高人个计算机之间的交互方式 1.2软件 软件=...
    allencaicai阅读 497评论 0 0
  • 每日要点 接口 接口是方法声明的集合 接口的三个关键点: 接口代表能力 (儿子实现和尚的接口,就有和尚的能力) 接...
    迷茫o阅读 426评论 0 0
  • 进入高三后,一直让学生坚持写成长手册。上面主要记录自己的对第二天的计划,当天的收获和总结。而且,一直想从...
    啊攀攀了阅读 894评论 0 1
  • 我们APP的核心功能实现方式为:原生和JS交互。这就需要频繁的互传数据,互传数据在这里就先不说,之后写的一篇,可以...
    优米诺阅读 12,568评论 32 30