2017-09-09 1 views
0

저는 여기에 자바가 새로 도입되어 현재 다음과 같은 작업을 수행하는 프로그램을 작성 중입니다. JLabel의 3 X 3 그리드가 있다고 가정 해 보겠습니다. 어떻게 ImageIcon을로드 한 다음 레이블에서 다른 것으로 옮깁니 까? 예를 들어, 각 레이블의 이름은 label_1 - label_9이며 imageicon은 label_2입니다. label_3을 클릭하면 image_icon이 label_3으로 이동합니다.이미지 아이콘 만들기 마우스 클릭으로 한 레이블에서 다른 레이블로 건너 뛰기

답변

0

여러분의 필요에 따라 적용 할 수있는 매우 빠른 예입니다.

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 

public class Test extends JFrame { 

    public Test() { 
     JPanel container = new JPanel(new GridLayout(3, 3)); 
     for (int i = 0; i < 9; i++) { 
      JLabel label = new JLabel("Label" + i); 
      label.setPreferredSize(new Dimension(100, 100)); 
      label.setBorder(BorderFactory.createLineBorder(Color.black)); 
      label.addMouseListener(new MouseListener() { 
       @Override 
       public void mouseClicked(MouseEvent e) { 
        Icon icon = UIManager.getIcon("OptionPane.informationIcon"); 

        JLabel clickedLabel = (JLabel) e.getSource(); 
        Container parent = clickedLabel.getParent(); 
        clearIcons(parent); 
        clickedLabel.setIcon(icon); 
       } 

       private void clearIcons(Container parent) { 
        Component[] components = parent.getComponents(); 
        for (Component component : components) { 
         ((JLabel) component).setIcon(null); 
        } 
       } 

       @Override 
       public void mousePressed(MouseEvent e) { 
       } 

       @Override 
       public void mouseReleased(MouseEvent e) { 
       } 

       @Override 
       public void mouseEntered(MouseEvent e) { 
       } 

       @Override 
       public void mouseExited(MouseEvent e) { 
       } 
      }); 
      container.add(label); 
     } 
     add(container); 
    } 

    public static void main(String[] args) { 
     Test frame = new Test(); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.setLocationRelativeTo(null); 
     frame.pack(); 
    } 
} 

결과는 다음해야합니다

enter image description here

관련 문제