2017-09-09 1 views
0

Ich bin ziemlich neu in Java hier, und gerade arbeite ich an einem Programm, das die folgenden Aktionen beinhaltet. Sagen wir, ich habe ein 3 X 3 Raster von JLabel. Wie lade ich ein ImageIcon und verschiebe es dann von einem Label zum anderen. Angenommen, jede Beschriftung hat den Namen label_1 bis label_9 und das Bildsymbol steht auf label_2. Wenn ich auf label_3, imageicon klicke, sollte es auf label_3 gehenMake image Icon Wechseln von einem Label zu einem anderen per Mausklick

Antwort

0

Sehr schnelles Beispiel, das Sie an Ihre Bedürfnisse anpassen können.

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(); 
    } 
} 

Ergebnis sollte wie folgt sein:

enter image description here

Verwandte Themen