-1

我想添加using或任何其他布局,并在 using 和 key 之间移动。在JButtons上下移动时遇到问题,因为我不知道.JPanelFlowLayoutJButtonsUpDownJButton

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;
}
}
4

1 回答 1

-1
  1. 为所有按钮添加一个按键监听器,监听上下按键

  2. 将 x,y 坐标添加到按钮。IE。您可以扩展 JButton 或拥有某种将坐标与 JButton 相关联的地图。

  3. 当向上和向下按下然后计算焦点应该落在哪里,然后在你弄清楚它应该是什么按钮之后。在按钮上调用requestFocusInWindow() 。

于 2013-07-08T09:55:49.437 回答