我不知道如何将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(“测试”)做一些事情,但我不知道如何解决这个问题。
P.S。对不起我的英文...
编辑:对于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交互。我想将图标(gif)添加到JLabel并使用MouseListener将icon1更改为icon2示例mouseClicked或mousePressed。如果我使用:
test.addMouseListener(new MouseListener()
{
public void mouseClicked(MouseEvent e) {
System.out.println(ikona2);
}
我只在Eclipse控制台中看到“ikona2”的来源。我希望在JFrame中看到动作。
答案 0 :(得分:2)
我不确定我是否理解这个问题,但您可以像JLabel一样绘制JButton,但仍然让ActionListener像按钮一样工作:
JButton button3 = new JButton("Label Button");
button3.setBorderPainted(false);
button3.setContentAreaFilled(false);
button3.addActionListener( ... );
答案 1 :(得分:2)
监听器是一种跟随observer pattern的回调,有些事情会发生,你会得到通知。
对于许多不同类型的事件,有许多类型的侦听器。按钮的ActionListener
由至少用户点击或按下输入或空格触发,而按钮具有焦点。
标签没有ActionListener
,标签是用于所有预期目的的静态组件,但是,标签确实有MouseListener
...
MouseListener listener = ...;
JLabel label = new JLabel("This is a clickable lable");
label.addMouseListener(listener);
这将允许您监视标签上发生鼠标单击的时间。
看看:
了解更多详情
答案 2 :(得分:0)
您无法将这两个动作侦听器(MouseListener和ActionListener)组合在一起。您可以在JLabel上添加MouseListener以及JButton。无论如何都不允许将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 */
}
}