[英]Using JFileChooser to reselect files in directory
我正在尝试使用Java创建UI,以便用户仅使用JButton即可浏览目录中的图像。 但是,每当我使用JFileChooser选择新图像时,图像便会彼此追加。 如何删除上一张图像并显示新图像?
我还试图通过单击“下一个/上一个”按钮来找出如何转到目录中的下一个/上一个图像。 我该如何实现? 以下是我的ButtonListener的代码:
private class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == chooseBtn)
{
JFileChooser fileChooser = new JFileChooser();
int returnValue = fileChooser.showOpenDialog(null);
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (returnValue == JFileChooser.APPROVE_OPTION)
{
File selectedFile = fileChooser.getSelectedFile();
String fileName = selectedFile.toString();
image = new JLabel(new ImageIcon(fileName));
imgPanel.add(image);
frame.add(imgPanel, BorderLayout.WEST);
frame.repaint();
frame.validate();
}
}
else if(e.getSource() == nextBtn)
{
System.out.println("Next");
}
else if(e.getSource() == prevBtn)
{
System.out.println("Previous");
}
}
}
这是问题所在。您创建了新标签并添加到面板上。这就是为什么图像会附加到面板上的原因
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
String fileName = selectedFile.toString();
image = new JLabel(new ImageIcon(fileName));
imgPanel.add(image);
frame.add(imgPanel, BorderLayout.WEST);
frame.repaint();
frame.validate();
}
不要每次都创建标签。只需选择一次并在选择图像时更改图像图标
////don't repeate this code block
image = new JLabel();
imgPanel.add(image);
frame.add(imgPanel, BorderLayout.WEST);
frame.repaint();
frame.validate();
/////////
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
String fileName = selectedFile.toString();
image.setIcon(new ImageIcon(fileName ));
//repaint
frame.repaint();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.