2013-07-08 42 views
-1

Jbutton將之間移動我想使用FlowLayout或任何其他佈局和上下移動使用UpDown key..Having問題JButtons之間移動JPanel中添加JButtons,因爲我不知道的JButton的行和列。使用鍵盤

public class abc{ 
List<ControlCenterButton> buttons=getButtons();  
JPanel buttonPanel= new JPanel(); 
buttonPanel.setLayout(new FlowLayout) 
for (int i = 0; i < buttons.size(); i++) { 
      ControlCenterButton button = buttons.get(i); 
      if (button.getLayarID().equals(id)) { 
       flag = true; 
       button.addActionListener(this); 
       button.setPosition(i); 
       button.addMouseListener(new MouseAdapter() { 
        @Override 
        public void mousePressed(MouseEvent mouseEvent) { 
         buttonPanel.requestFocusInWindow(); 
        } 
       }); 
       buttonPanel.add(button); 
} 

    buttonPanel.addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyPressed(KeyEvent keyEvent) { 
       final ControlCenterButton selectedControlCenterButton =  (ControlCenterButton) Session.getSession().getAttribute("controlcenter.selectedbutton"); 
       int position = selectedControlCenterButton.getPosition(); 
       int keycode = keyEvent.getKeyCode(); 
       switch (keycode) { 
        case KeyEvent.VK_RIGHT: { 
         if (position + 1 >= buttons.size()) { 
          ControlCenterButton.selectButton(buttons.get(0)); 
         } else 
          ControlCenterButton.selectButton(buttons.get(position +)); 
         break; 
        } 
      case KeyEvent.VK_UP: { 
          break; 
         } 
         case KeyEvent.VK_DOWN: { 
         }    
     case KeyEvent.VK_ENTER: { 
         selectedControlCenterButton.requestFocusInWindow(); 
         new ControlCenterButton().openApplication(selectedControlCenterButton); 
         break; 
        } 
       } 
} 
public class ControlCenterButton extends JButton implements ActionListener { 
private int position; 
public int getPosition() { 
     return position; 
} 

public void setPosition(int position) { 
    this.position = position; 
} 
} 
+0

您使用的是什麼佈局? –

+0

他已經提到過,flowlayout .... –

+0

你到目前爲止嘗試過什麼?您應該發佈一些代碼並解釋您當前/期望的結果 – Dahaka

回答

-1
  1. 添加一鍵收聽到偵聽按鍵

  2. 添加X的所有按鈕,y座標的按鈕。 IE瀏覽器。你可以擴展JButton或者使用某種將座標與JButton關聯的映射。

  3. 當上下按下時,計算焦點應該落在哪裏,然後在找出它應該是什麼按鈕之後。請在按鈕上調用requestFocusInWindow()

+2

*「在按鈕上調用grabFocus()」。*最好調用['requestFocusInWindow()'](http://docs.oracle.com/javase/7/文檔/ API/JAVA/AWT/Component.html#requestFocusInWindow%28%29)。實際上,從JavaDocs中引用。*「這個方法是專門用於焦點實現的。**客戶端代碼不應該使用這個方法;而是應該使用'requestFocusInWindow()'。」* –

+0

謝謝.. ............ –

+0

不會忘記所有關於keyListeners,學習所有關鍵綁定:-) – kleopatra