在很多情况下我碰巧写了一个事件,后来我发现在另一个事件中我一次又一次地重复相同的代码。例如,我在mouuseclick中有这段代码:
Text_1.addMouseListener(new org.eclipse.swt.events.MouseListener() {
public void mouseDown(MouseEvent e) {
if(Highlighted)
//UnHighlightWords();
SetActualWord();
selectedWord=ActualWord;
fetchWord(ActualWord);
DisplayData.label_translation.setText(String.valueOf(ActualWord.getSurahNumber()));
ShowWord(ActualWord);
}
我将再次举行像这样的按键事件:
Text_1.addKeyListener(new org.eclipse.swt.events.KeyListener(){
public void keyPressed(KeyEvent e) {
// ******recall Mousedown event*******
}
}
是否可以在Keypressed中调用Mousedown方法,以便在此处不再重复相同的代码?如果是的话怎么样?
答案 0 :(得分:2)
只需将所有这些代码(您已在鼠标事件中调用它)放在一个单独的方法中,并在需要时调用该方法
if(Highlighted)
//UnHighlightWords();
SetActualWord();
selectedWord=ActualWord;
fetchWord(ActualWord);
DisplayData.label_translation.setText(String.valueOf(ActualWord.getSurahNumber()));
ShowWord(ActualWord);
答案 1 :(得分:1)
简单。首先获取对象的引用(这是匿名类的实例:
//I'll import the class for readability
import org.eclipse.swt.events.KeyListener;
//snip
//Do this line ***OUTSIDE*** the method, and in the class body!
MouseListener ml=new MouseListener(){
void mouseClicked(MouseEvent e){
//Do something
}
//All the other methods as well
}
KeyListener kl=new KeyListener(){
public void keyPressed(KeyEvent e) {
ml.mouseClicked(new MouseEvent(Component source, ...)); //edit this part as needed
}
}
Text_1.addKeyListener(kl);
您现在可以根据需要重复使用kl
。您也可以通过执行kl.keyPressed(KeyEvent e);
答案 2 :(得分:1)
您无法在 MouseListener 的方法中调用 KeyListener的方法,因为它们是不同的事件并用于不同的目的,因此您无法转换{ {1}}事件发送到KeyListener
,反之亦然。
但您可以在MouseListener
内拨打电话keyPressed()
,因为它们是相同的事件。
<强>更新强>
keyReleased()