2つのJボタンのアイコンを1つずつ選択して変更したい場合は、アイコンを入れ替えてください。キャンディーのようなものが押しつぶされたり、飾られています。 これを達成するためにアクションリスナーを使用したいのですが、どうすればいいですか?2 jbuttonのスワップアイコン
これは私のプログラムのGUIです:
public class UI implements Runnable {
private JFrame _frame;
private Model _model;
private ArrayList<JButton> _tiles;
public void run() {
_model = new Model();
_frame = new JFrame();
_frame.setLayout(new GridLayout(5,5));
_tiles = new ArrayList<JButton>();
for (int i=0; i<25; i++) {
JButton tile = new JButton();
tile.setBackground(Color.white);
//this just pick out random icon file from a folder
tile.setIcon(_model.randomIcon());
tile.addActionListener(new ButtonBorderHandler(_model,tile));
//this is the actionlistener that i want to implement the swap on
tile.addActionListener(new ButtonSwapHandler();
_tiles.add(tile);
}
私はあなたのロジックは少し明快さを必要とするので、
public class ButtonSwapHandler implements ActionListener{
JButton _button1;
JButton _button2;
Model _model;
UI _ui;
public ButtonSwapHandler(UI u,Model m, JButton b1, JButton b2){
_model=m;
_button1=b1;
_button2=b2;
_ui =u;
}
@Override
public void actionPerformed(ActionEvent e) {
//this line should give me the position of the first button i press
int i = _ui.getTiles().indexOf(e.getSource());
//this is the part where i dont know how to keep going
//i want to know where is the 2nd button that i clicked
int j = _ui.getTiles().indexOf(e.
// this is the method i wrote to make the swap
// it just the Collections.swap(tile,positionOfButton1,postionOfButton2)
_model.swap(ui._tile,i,j);
}
はあなたしようとした再描画()を持っているか、スワップ後に()再検証? – Definity
問題は、どのボタンが2番目に押されたのか分からないためにスワップする方法がわからないということです。 – john