【发布时间】:2015-11-17 11:57:52
【问题描述】:
我有一个关于 Java 编码的快速(或不是)问题。
有没有一种方法可以交换 2 个 JButton 中的文本,或者当我单击其中一个时交换按钮本身?就像,每个按钮都有一个特定的其他按钮,需要一键替换。 虽然在我的代码中它不是整数,而是字符串“X”和“Y”。
这是我的代码:
package game;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Game extends JFrame implements ActionListener{
public static void main(String[] args) {
int row = 5;
int col = 5;
Game gt = new Game(row, col);
gt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gt.pack();
gt.setVisible(true);
}
String X = "X";
String Y = "Y";
int i = 0;
int j = 0;
public Game(int row, int col) {
Container pane = getContentPane();
pane.setLayout(new GridLayout(row, col));
for(int i = 0; i < 25; i++)
{
if(i == 1 || i == 2 || i == 14 || i == 15 || i == 23 || i == 9)
{
JButton button = new JButton(X);
pane.add(button);
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()==button)
{
if(button.getText() == Y) button.setText(X);
else button.setText(Y);
}
}
}
);
} else if(i == 3 || i == 5 || i == 10 || i == 19 || i == 21 || i == 22){
JButton button = new JButton(Y);
pane.add(button);
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()==button)
{
if(button.getText() == Y) button.setText(X);
else button.setText(Y);
}
}
});
} else {
JButton button = new JButton();
pane.add(button);
button.setEnabled(false);
button.setBorderPainted(false);
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
}
}
提前谢谢你!
【问题讨论】:
-
您的代码似乎没问题,有一些明显的语法错误。您面临的问题是什么?
-
好吧,代码运行数组,所以我不会说它有任何问题。我要问的是,如果我只点击其中一个,是否有办法交换两个特定的 JButton。例如,我有这样的数组puu.sh/jMukP/a7796f7df6.png ...当我单击第一个 X 时,例如,在第一行,我希望它转向 Y,而另一侧(Y)的那个变成X,反之亦然。只是,按钮交换它们的对立面。
-
你想交换哪两个按钮?我在动作监听器中没有看到对
other按钮的引用。 -
嗯,就是这样,我不知道如何进行交换,所以问题是我如何才能做到这一点。当我单击其中一个时,它们应该像这样puu.sh/jMwYO/ee880bce41.png 进行交换...我尝试使用 for 并将它们交换到具有 [i] 值的数组中,但随后出现错误,例如“仅从从未写过”等。
标签: java arrays button matrix swap