zoukankan      html  css  js  c++  java
  • 触发按钮改变panel面板上的小圆圈颜色

    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    
    public class TouChaCol implements ActionListener{
        JFrame frame;
        public static void main(String [] args){
            TouChaCol game = new TouChaCol();
            game.go();
        }
        
        public void go(){
            frame = new JFrame();
            JButton button = new JButton("Can you touch me?");
            button.addActionListener(this);
            Panel aPanel = new Panel();
            
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.getContentPane().add(BorderLayout.SOUTH,button);
            frame.getContentPane().add(BorderLayout.CENTER,aPanel);
            
            frame.setSize(300, 300);
            frame.setVisible(true);
        }
        
        public void actionPerformed(ActionEvent event){
            frame.repaint();
        }
    
    }
    View class TouChaCol

    查询java api文档:

    ActionEvent 类 来自java.awt.event

    JFrame,JButton 类来自javax.swing

    接口 ActioListener来自java.awt.event

    BorderLayout 类 来自java.awt 用法:BorderLayout.SOUTH/CENTER...详见文档

    import javax.swing.*;
    import java.awt.*;
    public class Panel extends JPanel{
        public void paintComponent(Graphics g){
            int red = (int)(Math.random() * 255);
            int green = (int)(Math.random() * 255);
            int blue = (int)(Math.random() * 255);
            Color myColor = new Color(red,green,blue);
            g.setColor(myColor);
            g.fillOval(70,70, 100, 100);
        }
    }
    View class Panel

    让Panel继承JPanel,覆盖它的paintComponent(Graphics g)方法则可以按照自己的意思画图

    整体思想:

    建一个类TouChaCol

    分别建1个 JFrame ,Panel(继承过JPanel)和 button的对象

    再将后两者的对象放到JFrame对象上,将button的监听者设为TouChaCol的对象(该对象即为ActionListener)

    所以要在该对象的类中实现接口ActionListener中的actionPerformed(ActionEvent e)方法作为事件处理方法(e即为button被按了一下)

    特意将frame设为实例变量,不用是不行的,原因是actionPerformed必须得存取frame对象

  • 相关阅读:
    poj2528Mayor's posters(线段树加离散化)第一次接触离散化 做的挺辛苦的
    poj1789Truck History(简单最小生成树)
    【洛谷P2468】粟粟的书架
    【洛谷P3523】DYNDynamite
    【SP1716】GSS3 Can you answer these queries III
    【洛谷P3320】寻宝游戏
    【洛谷P3322】排序
    【GMOJ6293】迷宫
    【GMOJ4051】序列统计
    【洛谷P4719】【模板】动态 DP
  • 原文地址:https://www.cnblogs.com/gabygoole/p/4910126.html
Copyright © 2011-2022 走看看