2017-09-09 10 views
0

私はここでJavaを使い始めたばかりですが、今私は次の操作を行うプログラムを作っています。私は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

関連する問題