[英]How to add MouseListener to actionPerformed?
我不知道如何將 mouseListener(mouseClicked、mouseEntered 等)添加到我的 actionPerformed。 我只學會了如何從 JButton 添加動作,但 mouseListener 在 JLabel 中。
這是這段代碼:
test = new JLabel (ikona);
test.setBounds(200, 200, 100, 100);
add(test);
test.addMouseListener(new MouseListener()
{
public void mouseClicked(MouseEvent e) {
System.out.println(ikona2);
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
和:
public void actionPerformed(ActionEvent arg0)
{
Object Zrodlo = arg0.getSource();
if (Źródło==przycisk)
{
wyswietlacz.setText(new Date().toString());
//System.out.println(new Date());
}
else if (Zrodlo==przycisk2)
{
dispose();
}
else if (Zrodlo==przycisk3)
{
wyswietlacz.setText(new Date().toString());
}
else if (Zrodlo==test)
{
wyswietlacz.setText("");
}
“przycsik、przycisk2、przycisk3”是 JButton,我嘗試用 JLAbel(“測試”)做一些事情,但我不知道如何解決這個問題。
PS對不起我的英語......
編輯:對於 JButton,我用它來查看我的操作 JFrame:
public void actionPerformed(ActionEvent arg0)
{
Object Zrodlo = arg0.getSource();
if (Źródło==przycisk)
{
wyswietlacz.setText(new Date().toString());
//System.out.println(new Date());
}
else if (Źródło==przycisk2)
{
dispose();
}
我想對我的 JLabel 和 mouseListener 做同樣的事情。 我想查看哪個鼠標/光標與哪個 MouseListener 的交互。 我想將 icon(gif) 添加到 JLabel 並使用 MouseListener 將 icon1 更改為 icon2 示例 mouseClicked 或 mousePressed。 如果我使用:
test.addMouseListener(new MouseListener()
{
public void mouseClicked(MouseEvent e) {
System.out.println(ikona2);
}
我只能在我的 Eclipse 控制台中看到我的“ikona2”的源代碼。 我想在我的 JFrame 中看到動作。
不確定我是否理解這個問題,但您可以像 JLabel 一樣繪制 JButton,但仍然讓 ActionListener 像按鈕一樣工作:
JButton button3 = new JButton("Label Button");
button3.setBorderPainted(false);
button3..setFocusPainted(false);
button3.setContentAreaFilled(false);
button3.addActionListener( ... );
偵聽器是一種遵循觀察者模式的回調類型,發生某些事情時,您會收到通知。
對於許多不同類型的事件,有許多類型的偵聽器。 按鈕有一個ActionListener
,它至少由用戶在按鈕具有焦點時單擊或按下回車鍵或空格鍵觸發。
label 沒有ActionListener
,label 是用於所有預期目的的 static 組件,但是,label 確實有MouseListener
...
MouseListener listener = ...;
JLabel label = new JLabel("This is a clickable lable");
label.addMouseListener(listener);
這將允許您監視何時在 label 上發生鼠標單擊。
看一眼:
更多細節
您不能組合這兩個動作偵聽器(MouseListener 和 ActionListener)。 您可以在 JLabel 和 JButton 上添加 MouseListener。 無論如何都不允許將 ActionListener 添加到 JLabel。 您可以做的是創建一個 MouseListener 來處理 JLabel 和 JButton 的事件。 這是一個例子:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JLabel;
public class MouseListenerTest extends javax.swing.JFrame {
private static final long serialVersionUID = 3109442737770802801L;
public static void main(String[] args) {
MouseListenerTest t = new MouseListenerTest();
t.setLayout(new BorderLayout());
MyMouseListener mouseListener = new MyMouseListener();
JLabel l = new JLabel("JLabel");
l.setPreferredSize(new Dimension(200, 100));
JButton b = new JButton("JButton");
b.setPreferredSize(new Dimension(200, 100));
l.addMouseListener(mouseListener);
b.addMouseListener(mouseListener);
t.add(l, BorderLayout.CENTER);
t.add(b, BorderLayout.SOUTH);
t.pack();
t.setVisible(true);
}
}
class MyMouseListener implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
Object o = e.getSource();
if (o instanceof JButton) {
System.out.println("JButton");
} else if (o instanceof JLabel) {
System.out.println("JLabel");
}
}
@Override
public void mousePressed(MouseEvent e) {/* TODO */
}
@Override
public void mouseReleased(MouseEvent e) {/* TODO */
}
@Override
public void mouseEntered(MouseEvent e) {/* TODO */
}
@Override
public void mouseExited(MouseEvent e) {/* TODO */
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.