好吧,我唯一的问题是打开的对话框是先显示的。我只想把它放在 JFrame
然后把剩下的放在房间里 JFrame
喜欢打开图像并显示它。应该是这样的
问题是我的 JFileChooser
先放映。还有一件事是我希望这一切都在jframe内,就像图中所示。
这是我的密码:
import java.awt.Image;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.border.*;
import java.awt.Color;
import java.awt.Dimension;
public class imgviewer extends JFrame{
JButton button;
JLabel label;
public imgviewer() {
super("Image viewer");
label = new JLabel();
label.setBounds(400, 10, 180, 300);
Border b = BorderFactory.createLineBorder(Color.ORANGE, 2);
JFileChooser file = new JFileChooser(".");
label.setBorder(b);
add(label);
file.setPreferredSize(new Dimension(400, 300));
file.setCurrentDirectory(new File(System.getProperty("user.home")));
FileNameExtensionFilter filter = new FileNameExtensionFilter("*.Images", "jpg", "png", "gif");
file.addChoosableFileFilter(filter);
int result = file.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = file.getSelectedFile();
String path = selectedFile.getAbsolutePath();
label.setIcon(ResizeImage(path));
}
else if (result == JFileChooser.CANCEL_OPTION) {
System.out.println("No File Selected");
}
add(file);
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setSize(600, 350);
setVisible(true);
}
public ImageIcon ResizeImage(String ImagePath) {
ImageIcon MyImage = new ImageIcon(ImagePath);
Image img = MyImage.getImage();
Image newImg = img.getScaledInstance(label.getWidth(), label.getHeight(), Image.SCALE_SMOOTH);
ImageIcon image = new ImageIcon(newImg);
return image;
}
public static void main(String[] args) {
new imgviewer();
}
}
1条答案
按热度按时间igetnqfo1#
我不知道怎么做你想做的事,但你把底线放在哪里
int result = file.showOpenDialog(null);
在代码中,这是一行明确表示“立即在自己的文件对话框中打开这个jfilechooser”。按照代码的顺序,这显然发生在setVisible(true)
一行,它将打开您希望在文件对话框周围放置的 Package 器。后面的代码有什么原因吗
file.addChoosableFileFilter(filter);
,和之前add(file)
,是否缩进?如果您认为这段代码在一个单独的块中,它将阻止它在以后执行,那么事实并非如此。我没有和你一起工作过
JFileChooser
,或者说荡秋千一般,已经很久了,所以我不知道一下子有多好JFileChooser
如果将其视为嵌入到另一个组件中的独立组件,则可以工作,但如果这样做完全有效,则绝对不能使用JFileChooser
的showOpenDialog
方法。