2017-04-11 10 views
0

JInternalFrameをJDesktopPaneに拡張する "Terminal"を追加しました。 likeは、抽象メソッドelabを含むインタフェースであり、そのインスタンスを変数に格納します。 「OK」を押すと、exec.elab(String arg)メソッドが呼び出されます。私のJDesktopPaneに私はTerminal(new BasicCommands())を作成しました。その作成の後、コマンドで、私はterminal.setExec(new AdvancedCommands())でTerminalのインスタンスを変更したいと思います.ExpandCommandsとBasicCommandsはExecutableインターフェイスを実装し、独自のelabメソッドを含むクラスです。だから、私がそれをするとき、私は警告やその他のことはしませんが、terminal.setExec(new AdvancedCommands())に私のelabメソッドを変更するには、何も変わりません...どうすればいいですか?私は私がターミナルクラスでのKeyListenerを追加する方法JDesktopPaneのコンポーネントをリフレッシュする方法

...さわやか端子(再検証と再描画)何もしてみました:

inputArea.addKeyListener(new KeyAdapter() { 
     @Override 
     public void keyReleased(KeyEvent arg0) { 
      if (arg0.getKeyCode()==KeyEvent.VK_ENTER){ 
       if(!inputArea.getText().isEmpty()){ 
        scrollPane.getVerticalScrollBar().setValue(scrollPane.getVerticalScrollBar().getMaximum()); 
        exec.elab(new Str(inputArea.getText())); //I want to change this method with ter.setExec(some class that implements Executable); 
        clearInputArea(); 
       } 
      } 
     } 
    }); 

答えて

0

私は機能するソリューションを見つけましたが、存在する場合、私は知りません

public void refresh(){ 
    revalidate(); 
    repaint(); 
    inputArea.removeKeyListener(ad); 
    ad = new KeyAdapter() { 
     @Override 
     public void keyReleased(KeyEvent arg0) { 
      if (arg0.getKeyCode()==KeyEvent.VK_ENTER){ 
       if(!inputArea.getText().isEmpty()){ 
        scrollPane.getVerticalScrollBar().setValue(scrollPane.getVerticalScrollBar().getMaximum()); 
        exec.elab(new Str(inputArea.getText())); 
        clearInputArea(); 
       } 
      } 
     } 
    }; 
    inputArea.addKeyListener(ad); 
} 

私は自分のキーリストを削除してもう一度追加するこのメソッドを作成しました。

関連する問題