0
我在這裏對Java很陌生,現在我正在開發一個涉及以下操作的程序。比方說,我有一個JLabel的3 X 3網格。我如何加載ImageIcon,然後將其從標籤移動到另一個。例如,假設每個標籤都被命名爲label_1到label_9,並且imageicon在label_2上。當我點擊label_3,imageicon它應該去label_3製作圖像圖標通過鼠標單擊從一個標籤跳轉到另一個單擊
我在這裏對Java很陌生,現在我正在開發一個涉及以下操作的程序。比方說,我有一個JLabel的3 X 3網格。我如何加載ImageIcon,然後將其從標籤移動到另一個。例如,假設每個標籤都被命名爲label_1到label_9,並且imageicon在label_2上。當我點擊label_3,imageicon它應該去label_3製作圖像圖標通過鼠標單擊從一個標籤跳轉到另一個單擊
非常快速的例子,你可以適應你的需求。
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();
}
}
結果應該是如下: