当前位置:编程学习 > JAVA >>

关于Java7 ActionListener 的问题

以下是一小段代码,用来改变label上圆圈的颜色,理论上应该是点击“Change Color”以后颜色才会改变,实际上如果用鼠标改变窗口大小,颜色也会变    
(MyDrawPanel类的代码没有粘在这里,不用理会...)

求原因...
谢谢

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

public class TwoButtons {

    JFrame frame;

    JLabel label;

    /**

     * @param args

     */

    public static void main(String[] args) {

        TwoButtons gui = new TwoButtons();

        gui.go();

    }

    public void go() {

        this.frame = new JFrame();

        this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton labelButton = new JButton("Change Lable");

        labelButton.addActionListener(new LabelListener());

        JButton colorButton = new JButton("Change Cirle");

        colorButton.addActionListener(new ColorListener());

        this.label = new JLabel("I'm a label");

        this.label.setSize(50, 50);

        MyDrawPanel drawPanel = new MyDrawPanel();

        this.frame.getContentPane().add(BorderLayout.SOUTH, colorButton);

        this.frame.getContentPane().add(BorderLayout.CENTER, drawPanel);

        this.frame.getContentPane().add(BorderLayout.EAST, labelButton);

        this.frame.getContentPane().add(BorderLayout.WEST, this.label);

        this.frame.setSize(500, 500);

        this.frame.setVisible(true);

    }

    class LabelListener implements ActionListener {

        @Override

        public void actionPerformed(ActionEvent arg0) {

            String[] strArray = new String[5];

            strArray[0] = "label1";

            strArray[1] = "label2";

            strArray[2] = "label3";

            strArray[3] = "label4";

            strArray[4] = "label5";

            int random = (int) (Math.random() * 4);

            TwoButtons.this.label.setText(strArray[random]);

        }

    }

    class ColorListener implements ActionListener {

        @Override

        public void actionPerformed(ActionEvent e) {

            TwoButtons.this.frame.repaint();

        }

    }

}

java7 ActionListener  --------------------编程问答-------------------- 代码贴完,调试下 --------------------编程问答-------------------- 看了一下, 你的ColorListener里面就是repaint了一下,要知道,改变窗口大小的时候也是要repaint的 --------------------编程问答-------------------- 你的改变颜色的易做图中 只有一个 repaint方法 你颜色的改变在哪里?? 在repaint()方法中 、、、就如楼上所说 改变窗口打下 系统也会调用repaint方法。。。 所以你应该吧颜色的设置和改变些到 易做图中 
而不是谢在repaint()方法中。。。。。。。。
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,