【发布时间】:2014-02-14 16:10:05
【问题描述】:
我在 JPanel 上有 JTextField 和 JButton。我想将监听器添加到JButton,这样当我按下按钮并移动鼠标时,文本字段的值开始改变(当我向右移动鼠标时增加,当我向左移动鼠标时减少)。所以它有点像滑块。这是代码
final JPanel panel=new JPanel();
final JTextField text = new JTextField("10");
JButton button=new JButton("f");
panel.add(text);
panel.add(button);
button.addMouseListener(new MouseAdapter(){
@Override
public void mousePressed(final MouseEvent evt){
//here we add listener to read mouse position when mouse pressed on button
panel.addMouseListener(new MouseAdapter(){
int x1 = evt.getXOnScreen();
int x2;
@Override
public void mouseMoved(MouseEvent e){
// this method is never called
x2=e.getXOnScreen();
//increase(decrese) number in textfield by 1% for every moved pixel
double d = (x2-x1)*0.01+Double.parseDouble(text.getText());
text.setText(Double.toString(d));
x1=x2;
}
});
}
// now, when mouse released we should remove listener from panel
@Override
public void mouseReleased(final MouseEvent evt){
MouseListener[] ml = panel.getListeners(MouseListener.class);
panel.removeMouseListener(ml[0]);
}
});
问题是,panelListener 的 mouseMoved 方法永远不会被调用。我该怎么办?
【问题讨论】:
标签: java swing mouseevent