下面这个代码不知道为什么鼠标监听器的动作实现不了。。。在线等!
package J_Fram;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class J_Frame_MouseLisenter extends MouseAdapter{
JFrame f;
JButton red,blue,yellow;
public J_Frame_MouseLisenter() {
// TODO Auto-generated constructor stub
f = new JFrame("鼠标事件");
f.setLayout(new FlowLayout());
f.setBounds(400, 200, 300, 250);
red = new JButton("红色");
red.addMouseListener(this);
f.add(red);
f.setVisible(true);
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
f.setBackground(Color.RED);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
J_Frame_MouseLisenter t= new J_Frame_MouseLisenter();
}
}
@Override
public void mouseClicked(MouseEvent e){//这个才是鼠标点击事件
red.setBackground(Color.red);
f.getContentPane().setBackground(Color.blue);
}
调用JFrame或者Frame的 setBackground(Color color)方法设置后显示出来的颜色。其实,你的想法是正确的,但是我想提醒你的是,你没搞明白JFrame的显示机制。在你直接调用这个方法后,你的确设置了背景颜色,而你看到的却不是直接的JFrame或者Frame,而是JFrame.getContentPane().而JFrame上的contentPane默认是Color.WHITE的,所以,无论你对JFrame或者Frame怎么设置背景颜色,你看到的都只是contentPane
通过jpanel设置
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class J_Frame_MouseLisenter extends MouseAdapter{
JFrame f;
JButton red,blue,yellow;
JPanel jp;
public J_Frame_MouseLisenter() {
// TODO Auto-generated constructor stub
f = new JFrame("鼠标事件");
f.setLayout(new FlowLayout());
f.setBounds(400, 200, 300, 250);
jp=new JPanel(); //加上这句
f.add(jp);//加上这句
red = new JButton("红色");
red.addMouseListener(this);
jp.add(red);
f.setVisible(true);
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
jp.setBackground(Color.RED);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
J_Frame_MouseLisenter t= new J_Frame_MouseLisenter();
}
}
监听事件不应该写在监听器里吗
丵鹰的答复是比较全面的,不过默认的背景色不是白色的,是灰色的,这个没有多少问题。
虽然你设置了JFrame的background,但是因为不透明,你看不到。
谢谢你们的帮助,我搞懂啦~
@Override
public void mouseClicked(MouseEvent e){//这个才是鼠标点击事件
red.setBackground(Color.red);
f.getContentPane().setBackground(Color.blue);
}