用Java制作国际象棋游戏,我想要移动棋子

时间:2015-06-19 18:45:57

标签: java swing jbutton imageicon chess

所以我将我的图像存储为JButtons上的ImageIcon。我希望用户点击他们想要使用的作品的JButton,然后点击另一个JButton将其移动到那里,我该怎么做?

我尝试使用actionListener来获取ImageIcon,但证明它非常复杂,特别是因为我有一个2d的JButton图像数组。

ActionListener actionListener = new ActionListener() {
            public void actionPerformed(ActionEvent actionEvent) {

                System.out.println(actionEvent.getActionCommand());

            }
        };

        JButton[][] squares = new JButton[8][8];
        Border emptyBorder = BorderFactory.createEmptyBorder();

        for (int row = 0; row < squares.length; row++) {
            for (int col = 0; col < squares[row].length; col++) {

                JButton tempButton = new JButton();

                tempButton.setBorder(emptyBorder);
                tempButton.setSize(64, 64);


                squares[row][col] = tempButton;
                squares[row][col].addActionListener(actionListener);
                panel.add(squares[row][col]);

                squares[0][0].setIcon(new ImageIcon(BoardGUI.class.getResource("castle.png"), "castle"));



            }
        }

2 个答案:

答案 0 :(得分:0)

尝试以下代码。我不知道在JButtons上使用ImageIcons的确切代码,但这可以解决这些问题:

[^,]*

答案 1 :(得分:0)

不确定这是否是您正在寻找的,但是将JButton的位置移动到另一个的方法之一: 现在作为一个例子假装已经有代码声明并初始化JButton(JButton thatotherbutton = new JButton ...等)。将其移动到某个位置可以这样做:

Rectangle rect = thatotherbutton.getBounds();
xcoordinate = (int)rect.getX();
ycoordinate = (int)rect.getY();
chesspiecebutton.setBounds(xcoordinate, ycoordinate, xlengthofbutton, ylengthofbutton);

使用这些坐标在点击另一个JButton时设置JButton的新边界(换句话说,位置)。