java添加JMenuItem,点击弹出文件对话框,选择更换图片
时间: 2023-08-22 11:09:04 浏览: 189
你可以使用JMenuItem的addActionListener()方法来添加一个监听器,当用户点击菜单项时,监听器会被调用。在监听器中,你可以使用JFileChooser对话框来让用户选择要更换的图片。
以下是一个简单的示例代码,实现了这个功能:
```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
public class ChangeImageMenuItem extends JFrame {
private JLabel label;
private JFileChooser fileChooser;
private ImageIcon image;
public ChangeImageMenuItem() {
super("Change Image on MenuItem Click");
image = new ImageIcon("image.jpg");
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Menu");
JMenuItem menuItem = new JMenuItem("Change Image");
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileChooser = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("Images", "jpg", "jpeg", "png", "gif");
fileChooser.setFileFilter(filter);
int result = fileChooser.showOpenDialog(ChangeImageMenuItem.this);
if (result == JFileChooser.APPROVE_OPTION) {
image = new ImageIcon(fileChooser.getSelectedFile().getAbsolutePath());
label.setIcon(image);
}
}
});
menu.add(menuItem);
menuBar.add(menu);
setJMenuBar(menuBar);
label = new JLabel(image);
getContentPane().add(label, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setVisible(true);
}
public static void main(String[] args) {
new ChangeImageMenuItem();
}
}
```
在这个示例中,我们创建了一个JFrame窗口,并在其中添加了一个JLabel,用于显示图片。然后,我们创建了一个JMenuBar,并在其中添加了一个JMenu和一个JMenuItem。我们使用JMenuItem的addActionListener()方法来添加一个监听器,当用户点击菜单项时,监听器会被调用。在监听器中,我们创建了一个JFileChooser对话框,并设置了文件过滤器,以确保用户只能选择图片文件。然后,我们显示对话框,并在用户选择了文件后,使用JLabel的setIcon()方法来更换图片。最后,我们将JLabel添加到窗口中,并设置窗口的大小和可见性。
阅读全文