해당 이미지를 클릭하여이 코드에서 imageicon이 사용하는 아이콘을 다른 것으로 변경하고 싶습니다. 아무도 나를 도와 줄 수 있니? 이 코드에서 무엇을 할 수 있습니까 ?? 그리고 바닥이 하얀색으로 채워지면 가을을 내리고 싶습니다. 한 사용자가 흰 점을 클릭하면 색이 노란색으로 바뀌고 다시 한 번 다른 흰 색을 클릭하면 붉은 색으로 바뀝니다. 그것도 JLabel
으로 가능한 비록자바에서 이미지를 클릭하여 다른 이미지로 변경하려면 어떻게해야합니까?
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
class Connect4Games extends JFrame implements ActionListener, MouseListener
{
JFrame frame;
JPanel pane;
JLabel insertaxis[][];
ImageIcon EmptySpace, circleYellow, circleRed ;
BufferedImage bufferedImage;
public Connect4Games() {
LookAndFeel.setLookAndFeel();
pane = new JPanel();
frame = new JFrame();
insertaxis = new JLabel[6][7];
EmptySpace = new ImageIcon("image/Circle.png");
circleYellow = new ImageIcon("image/Circle2.png");
circleRed = new ImageIcon("image/Circle3.png");
pane.setLayout(new GridLayout(6, 7));
pane.setBackground(Color.blue);
add(pane);
addMouseListener(this);
setTitle("Connect 4");
setVisible(true);
setSize(670, 590);
frame.pack();
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
insertaxis[i][j] = new JLabel();
pane.add(insertaxis[i][j]);
insertaxis[i][j].setIcon(EmptySpace);
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
}
public static void main(String[] args) {
new Connect4Games();
}
@Override
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
if(e.getPoint() == null){
insertaxis[x][y].setIcon(circleRed);
}
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
프레임 대신 마우스 이벤트를 캡처하려는 레이블에 mouselistener를 추가하십시오. –
이 질문은 코드 완성에 관한 주제이므로 다루지 않습니다. –