-1

使用またはその他のレイアウトを追加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 座標を追加します。すなわち。JButton を拡張するか、座標を JButton に関連付けるある種のマップを持つことができます。

  3. 上下が押されたら、フォーカスがどこに着地するかを計算し、次にどのボタンを配置するかを決定します。ボタンでrequestFocusInWindow()を呼び出します。

于 2013-07-08T09:55:49.437 に答える