如何在点击图片时生成事件?
How to generate an event on the click of an image?
我正在设计一个 GUI,我在其中为多个框架添加了徽标。我想让徽标具有功能性,以便在单击它们时 returns 然后转到主菜单框架。
例如;我在这里创建了以下徽标(在控制器 class 中):
LogoTitlePanel = new JPanel(new GridLayout(1, 1));
LogoTitlePanel.setBackground(new java.awt.Color(255, 255, 255));
frame.add(LogoTitlePanel, BorderLayout.PAGE_START);
frame.setVisible(true);
LogoImage = new ImageIcon(getClass().getResource("Acme.png"));
ImageContainer = new JLabel(LogoImage);
LogoTitlePanel.add(ImageContainer);
wholeFramePanel.add(LogoTitlePanel);
frame.add(wholeFramePanel, BorderLayout.CENTER);
frame.setVisible(true);
... 我希望 Acme.png 图像在单击时将它们带到此框架(在 MainMenu class 中):
frame = new JFrame("Aston Cruise & Maritime Enterprise");
这有可能实现吗?如果是这样,如何?
尝试使用 MouseListener 而不是 ActionListener...
private MouseListener listener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
//Code...
}
}
LogoImage.addMouseListener(listener);
您可以使用 JButton 而不是 JLabel,然后只需将 ActionListener 添加到按钮即可。
您可以使用以下方法使按钮看起来像标签:
button.setBorderPainted( false );
button.setFocusPainted( false );
我正在设计一个 GUI,我在其中为多个框架添加了徽标。我想让徽标具有功能性,以便在单击它们时 returns 然后转到主菜单框架。
例如;我在这里创建了以下徽标(在控制器 class 中):
LogoTitlePanel = new JPanel(new GridLayout(1, 1));
LogoTitlePanel.setBackground(new java.awt.Color(255, 255, 255));
frame.add(LogoTitlePanel, BorderLayout.PAGE_START);
frame.setVisible(true);
LogoImage = new ImageIcon(getClass().getResource("Acme.png"));
ImageContainer = new JLabel(LogoImage);
LogoTitlePanel.add(ImageContainer);
wholeFramePanel.add(LogoTitlePanel);
frame.add(wholeFramePanel, BorderLayout.CENTER);
frame.setVisible(true);
... 我希望 Acme.png 图像在单击时将它们带到此框架(在 MainMenu class 中):
frame = new JFrame("Aston Cruise & Maritime Enterprise");
这有可能实现吗?如果是这样,如何?
尝试使用 MouseListener 而不是 ActionListener...
private MouseListener listener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
//Code...
}
}
LogoImage.addMouseListener(listener);
您可以使用 JButton 而不是 JLabel,然后只需将 ActionListener 添加到按钮即可。
您可以使用以下方法使按钮看起来像标签:
button.setBorderPainted( false );
button.setFocusPainted( false );