我有一套图像,我想在联合阵线上展示。 这些数字都是相同的,每个图像都填满JFrame。 I swap, 其中可见一层:
f = new JFrame("xx");
f.setSize(480, 854);
contentPane = f.getContentPane();
ip1 = new ImagePanel(new File("assets/1.jpg"));
ip2 = new ImagePanel(new File("assets/2.jpg"));
ip3 = new ImagePanel(new File("assets/3.jpg"));
f.setVisible(true);
contentPane.add(ip1);
contentPane.addMouseListener(mouseListener);
图像小组:
public class ImagePanel extends JPanel {
private BufferedImage image;
@Override
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, null);
}
public ImagePanel(File imageFile) {
try {
image = ImageIO.read(imageFile);
} catch (IOException e) {
System.out.println("Image could not be read: " + imageFile);
}
setVisible(true);
}
}
我试图在MouseListener之间打捞:
static MouseListener mouseListener = new MouseListener() {
private int i = 1;
@Override
public void mouseClicked(MouseEvent e) {
// logger.log(Level.INFO, e.toString());
contentPane.removeAll();
if (++i > 3) i = 1;
switch (i) {
case 1: contentPane.add(ip1); break;
case 2: contentPane.add(ip2); break;
case 3: contentPane.add(ip3); break;
}
contentPane.repaint();
}
};
第一个图像按预期显示。 浮标给我白色,同点击2点,第三点使我回头看上去。 如果我点击frame,在点击白色之间,那么第二和三幅图像就出现,一旦达到预期效果。 我失踪了什么?
Ack, newbs! 毫无疑问,有更好的办法......
感谢