为了帮助了解关于Java中的EventListeners
的更多信息,我创建了一个简单的程序,它由一个JFrame
和两个JPanels
组成,它应该做的是在Jpanel
上切换第二色作为它被点击。第二次设置JPanel对象的背景
我的代码在点击时将每个JPanel更改为新的辅助颜色,但当它再次单击时,它会恢复为原始颜色。我需要改变以使其正常工作?我试过多次重写代码,所以我必须忽略EventListener或JPanel的工作原理。
package com.spencerlarry;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class View extends JFrame{
public static final int OFF = 1;
public static final int ON = 1;
public static final String DARKGRAY = "#696969";
public static final String CYAN = "#00FFFF";
Space top;
Space bottom;
public View(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Window Test");
this.setSize(300, 300);
this.setMinimumSize(getSize());
this.setLayout(new GridLayout(2,1));
add(new Space());
add(new Space());
}
public class Space extends JPanel implements MouseListener{
private String color;
public Space(){
setBackground(Color.decode(DARKGRAY));
addMouseListener(this);
}
public String getColor(String c){
return color;
}
public void setColor(){
if(color == CYAN){
setBackground(Color.decode(DARKGRAY));
}
else{
setBackground(Color.decode(CYAN));
}
}
@Override
public void mouseClicked(MouseEvent e) {
this.setColor();
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}
}
@spencerlarry注意,'color'变量将不得不从'String'改为'Color'如果你做这个。 – gla3dr