[英]How to trigger inner class event handler inside an event handler (JAVA)
我有一個帶有KeyListener的JTextField。 在keyPressed里面我檢查是否輸入了被按下的鍵。 在此之后,我想在內部類中調用一個不同的事件處理程序(內部類只包含這個處理程序)。
這就是我所擁有的,但顯然:new handler()似乎沒有啟動內部類處理程序。
關鍵事件處理程序:
public void keyPressed(KeyEvent k) {
if(k.getKeyCode()==KeyEvent.VK_ENTER){
new handler();
}
}
內部類eventhandler:
public class handler implements ActionListener{
public void actionPerformed(ActionEvent e) {
int red = Integer.parseInt(roodT.getText());
int groen = Integer.parseInt(groenT.getText());
int blauw = Integer.parseInt(blauwT.getText());
if(red>255){
red = 255;
} else if (red < 0){
red = 0;
}
if(groen>255){
groen = 255;
} else if (groen < 0){
groen = 0;
}
if(blauw>255){
blauw = 255;
} else if (blauw < 0){
blauw = 0;
}
inhoud.setBackground(new Color(red, groen, blauw));
}
}
這是我第一次在這里發帖,很抱歉,如果這個問題沒有正確格式化。
只需將ActionListener
直接附加到JTextField
。 按下ENTER時將觸發它。 這是JTextField
內置行為。
供進一步參考:
KeyListener
附加到JTextComponent
。 使用DocumentListener
和/或DocumentFilter
(new handler()).actionPerformed( new ActionEvent( ... ) );
讓你的代碼'工作' 對於JTextField
您可以直接向其添加handler
:
JTextField someField = new JTextField(20);
someField.addActionListener(new handler());
在ENTER
-pressed時自動觸發ActionListener
。
對於所有JTextComponent
,使用DocumentListener
和DocumentFilter
,而不是使用KeyListener
。
對於其他JComponent
使用Swing KeyBindings 。
在所有情況下,請遠離KeyListener
,這是一個低級API。
public void keyPressed(KeyEvent k) {
if(k.getKeyCode()==KeyEvent.VK_ENTER){
new handler().**actionPerformed(k)**;
}
}
你忘了叫actionPerformed。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.