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();
}
}
结果应该是如下: