我喜欢做一个像宝石迷阵或糖果粉碎的游戏.我创建了64个按钮单元8x8.我想更改点击按钮的图像.但我不能.如果你能提供帮助,我会很高兴的.或者我怎么办?
编辑:我很抱歉.我无法清楚地解释我的问题.我的问题,我想改变点击两个按钮的图片.例如,我点击了按钮[5],然后点击了按钮[11].然后按钮[5]的图标应为按钮[11]图标,[11]的图标应为按钮[5]图标.
public class butondeneme extends JFrame{
private JPanel grid;
private JFrame jr;
public butondeneme(){
jr=new JFrame();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 640, 640);
grid=new JPanel();
grid.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
grid.setLayout(new GridLayout(8,8,5,5));
JButton[] buttons = new JButton[64];
//Creating random image for buttons
for (int i = 0; i<buttons.length; i++) {
Random r = new Random();
int a = r.nextInt(9)+1;
switch(a){
case 1 : buttons[i]=new JButton(new ImageIcon("img//Cakal.png"));
break;
case 2 : buttons[i]=new JButton(new ImageIcon("img//BugsBunny.png"));
break;
case 3 : buttons[i]=new JButton(new ImageIcon("img//Pig.png"));
break;
case 4 : buttons[i]=new JButton(new ImageIcon("img//Taz.png"));
break;
case 5 : buttons[i]=new JButton(new ImageIcon("img//Sam.png"));
break;
case 6 : buttons[i]=new JButton(new ImageIcon("img//DuffyDuck.png"));
break;
case 7 : buttons[i]=new JButton(new ImageIcon("img//Tweety.png"));
break;
case 8 : buttons[i]=new JButton(new ImageIcon("img//Slyvester.png"));
break;
case 9 : buttons[i]=new JButton(new ImageIcon("img//RoadRunner.png"));
break;
}
//Adding number to find easily
String comand=Integer.toString(i);
//Get ImageIcon name
final String imgName=((ImageIcon)buttons[i].getIcon()).toString();
buttons[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
}
}
});
buttons[i].setActionCommand(comand);
grid.add(buttons[i]);
}
add(grid);
}
public static void main(String[] args){
butondeneme erdem=new butondeneme();
erdem.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
您只需使用一种JButton.setIcon()方法即可获得所需的效果.虽然可能需要修改它以满足您的需求,但让它适用于您的用例.请关注此附加代码示例:
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class ButtonIconExample {
private JButton[] buttons = new JButton[64];
//private Icon informationIcon = UIManager.getIcon("OptionPane.informationIcon");
//private Icon errorIcon = UIManager.getIcon("OptionPane.errorIcon");
private Icon[] icons = {UIManager.getIcon("OptionPane.informationIcon"),
UIManager.getIcon("OptionPane.errorIcon"),
UIManager.getIcon("OptionPane.warningIcon")};
private int previousIndex;
private Random random;
private ActionListener buttonActions = new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
JButton button = (JButton) ae.getSource();
if (previousIndex == -1)
previousIndex = Integer.parseInt(button.getActionCommand());
else {
Icon previousIcon = buttons[previousIndex].getIcon();
Icon currentIcon = button.getIcon();
buttons[previousIndex].setIcon(currentIcon);
button.setIcon(previousIcon);
previousIndex = -1;
}
}
};
public ButtonIconExample() {
previousIndex = -1;
random = new Random();
}
private void displayGUI() {
JFrame frame = new JFrame("Button Icon Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setLayout(new GridLayout(8, 8, 5, 5));
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton();
buttons[i].setIcon(icons[random.nextInt(3)]);
buttons[i].setActionCommand("" + i);
buttons[i].addActionListener(buttonActions);
contentPane.add(buttons[i]);
}
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String... args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
new ButtonIconExample().displayGUI();
}
};
EventQueue.invokeLater(runnable);
}
}
Run Code Online (Sandbox Code Playgroud)