【问题标题】:JButton, uneven matrix of them ( like 1st row 7 colums, 2nd row 9, ectr)JButton,它们的不均匀矩阵(如第一行 7 列,第二行 9,等)
【发布时间】:2014-07-24 08:33:38
【问题描述】:

我的主要问题是制作一个按钮矩阵,点击它会向我发送 2 个整数值(行和列)。矩阵是偶数,比如第一行有 7 列,第二行有 5 列,第三行有 9,等等...我找到了一个很好的解决方案来制作矩阵,但是当我使用 remove() 时,布局比立即更改按钮的位置...这是代码的一部分。

private static JButton[][] buttons;
   public static JFrame f = new JFrame();

   public TEMPus(int row, int col) {
      super(new GridLayout(row, col));

      buttons = new JButton[row][col];

      for (int i = 0; i < buttons.length; i++) {
         for (int j = 0; j < buttons[i].length; j++) {
            final int curRow = i;
            final int curCol = j;
            buttons[i][j] = new JButton(j + ", " + i);
            buttons[i][j].addKeyListener(enter);
            buttons[i][j].addKeyListener(new KeyAdapter() {
               @Override
               public void keyPressed(KeyEvent e) {
                  switch (e.getKeyCode()) {
                  case KeyEvent.VK_UP:
                     if (curRow > 0)
                        buttons[curRow - 1][curCol].requestFocus();
                     break;
                  case KeyEvent.VK_DOWN:
                     if (curRow < buttons.length - 1)
                        buttons[curRow + 1][curCol].requestFocus();
                     break;
                  case KeyEvent.VK_LEFT:
                     if (curCol > 0)
                        buttons[curRow][curCol - 1].requestFocus();
                     break;
                  case KeyEvent.VK_RIGHT:
                     if (curCol < buttons[curRow].length - 1)
                        buttons[curRow][curCol + 1].requestFocus();
                     break;
                  default:
                     break;
                  } // end of switch
               }
            }); //end of key listener
            add(buttons[i][j]);
         }
      }
   }

这是我试图删除某些按钮的主要地方...

public static void main(String[] args) {

      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      TEMPus temp1 =new TEMPus(3, 5);
      temp1.remove(buttons[1][4]);
      f.add(temp1);
      f.pack();
      f.setVisible(true);
      }

抱歉发了这么长的帖子:/感谢您抽出宝贵时间:)

【问题讨论】:

    标签: java jbutton


    【解决方案1】:

    布局不能更改按钮的名称,只能更改按钮的位置。

    如果您想保留按钮的位置,简单的解决方案是隐藏按钮 (setVisible(false)) 而不是删除它。更灵活的解决方案是将所有按钮放在 JPanel 中,然后用空的 Canvas 替换按钮(另请参阅 this answer)。

    【讨论】:

    • 谢谢,这正是我过去 2-3 小时在这个论坛上寻找的东西 O_o 我觉得有点愚蠢,没有找到。再次感谢您抽出宝贵时间^^ PS:我删除了有关名称的部分,是的,它没有改变,只是与展示位置搞砸了,我误解了它。
    猜你喜欢
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多