如何编写一个鼠标监听器来响应在JFrame
中按下任何对象或一个特定对象的操作?
这是我的鼠标监听器 -
class mouse extends MouseAdapter
{
public void mousePressed(MouseEvent event)
{
yearLabel.setText("nu");
}
}
如何编写一个鼠标监听器来响应在JFrame
中按下任何对象或一个特定对象的操作?
这是我的鼠标监听器 -
class mouse extends MouseAdapter
{
public void mousePressed(MouseEvent event)
{
yearLabel.setText("nu");
}
}
您可以通过 Toolkit.getDefaultToolkit().addAWTEventListener(listener,mask) 添加全局鼠标监听器。
以下是一个示例:
public class SwingTest{
public static void main(String[] args) {
JPanel mainPanel = new JPanel();
mainPanel.add(new JButton("button"));
final JLabel label = new JLabel("label");
mainPanel.add(label);
showFrame("", mainPanel);
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
public void eventDispatched(AWTEvent event) {
if(event instanceof MouseEvent){
MouseEvent evt = (MouseEvent)event;
if(evt.getID() == MouseEvent.MOUSE_CLICKED){
label.setText("mouse clicked at: " + evt.getPoint());
}
}
}
}, AWTEvent.MOUSE_EVENT_MASK);
}
public static JFrame showFrame(String title, Component component) {
JFrame frame = new JFrame();
frame.setTitle(title);
frame.getContentPane().add(component, BorderLayout.CENTER);
frame.setSize(900, 700);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
return frame;
}
}
您是否将此侦听器附加到包含 yearLabel
的组件上?此外,我应该指出,按照惯例,类名应大写。否则,您会让其他程序员感到困惑。
JComponent
,那么frame.getContentPane().add(component, BorderLayout.CENTER);
是没有用的,只需要使用frame.add(component)
并放置在BorderLayout.CENTER
上,如果有两个或更多,则使用的 LayoutManager 是 FlowLayout。 - mKorbel