加入事件监视器,一个简单例子:import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;class MinFrame {
public static void main(String[] args) {
final JFrame frame=new JFrame();
frame.setSize(300,300);
frame.show();
JPanel testPanel=new JPanel();
Container contentPanel=frame.getContentPane();
contentPanel.add(testPanel);
testPanel.addMouseListener(new MouseLister(testPanel));
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
}
}
class MouseLister implements MouseListener{
private JPanel parent;
private Color clickColor=Color.green;
private Color releasedkColor=Color.red;
MouseLister(JPanel parent){
this.parent=parent;
}
public void mouseClicked(MouseEvent e){ }
public void mousePressed(MouseEvent e){
parent.setBackground(clickColor);
} public void mouseReleased(MouseEvent e){
parent.setBackground(releasedkColor);
} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){}
}
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;class MinFrame {
public static void main(String[] args) {
final JFrame frame=new JFrame();
frame.setSize(300,300);
frame.show();
JPanel testPanel=new JPanel();
Container contentPanel=frame.getContentPane();
contentPanel.add(testPanel);
testPanel.addMouseListener(new MouseLister(testPanel));
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
}
}
class MouseLister implements MouseListener{
private JPanel parent;
private Color clickColor=Color.green;
private Color releasedkColor=Color.red;
MouseLister(JPanel parent){
this.parent=parent;
}
public void mouseClicked(MouseEvent e){ }
public void mousePressed(MouseEvent e){
parent.setBackground(clickColor);
} public void mouseReleased(MouseEvent e){
parent.setBackground(releasedkColor);
} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){}
}
这个例子添加的事件处理是在单独一个类中,不像JButton那样直接在JFrame中处理,
如:
button1.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e)
{ doNewFileClick(); }});如果像你上面的做法的话,JFrame的东西要和MyPanel进行交互该如何做?
private JFrame frame;
...public MyPanel(){
super();
}public MyPanel(JFrame frame){
super();
this.frame = frame;
}public void doSomething(){
//这儿就可以使用JFrame了:~)
}}不知是否理解了楼主的意思。
private JFrame frame;
...public MyPanelListener (){
super();
}public MyPanelListener (JFrame frame){
super();
this.frame = frame;
}public void doSomething(){
//这儿就可以使用JFrame了:~)
}}呵呵:~)有意思。写完了,才发现与topirol(我爱学习) 君一个意思!
因为它们不是JFrame的方法,所以会编译失败。
我刚学JAVA不久,不太习惯JDK的东西。