这个java swing不显示图片,
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
String name = file.getName().toLowerCase();
return name.endsWith(".gif")
|| name.endsWith(".jpg")
|| name.endsWith(".jpeg")
|| file.isDirectory();
}
public String getDescription() {return "图像文件"; }
});
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
filename = chooser.getSelectedFile().getName();
openPath = chooser.getCurrentDirectory().getPath();
File file = new File(openPath);
pics = file.list();
for(int j=0;j<pics.length;j++)
if(pics[j].equalsIgnoreCase(filename)){
i=j;
break;
}
dir = openPath + "\\"+ filename;
showImagePane.loadImage(dir);
} 展开
2017-12-13 · 知道合伙人互联网行家
最近老师布置了一个小项目,要求用JAVA Swing 编写实现一个学生信息管理系统.
上午自习课上,就开始了这个项目的实现.念于JAVA 做图形界面的视觉效果实在一般,就想到平时做B/S项目时先用PS 做好整体界面图形,然后再切割成并
生成网页文件.于是就也用 PS 先做了一张看起来还算满意的登录界面(如下图).
想着把这个漂亮界面做成窗体的背景.然后往指定位置放置输入框和按钮即可.可无奈Swing 的 JFrame 窗体没有
设置背景图像的属性.随后再网上查到可以用JLable设置个图像当做背景图.于是乎就照做了.并往窗体里适当位
置添加了JTextField和JButton.心想这下可大功告成,就等着运行一下欣赏下自己的杰作.怎奈想象很完美,现实
很残酷,运行出来后发现添加的两个JButton不见了.鼠标指到所在位置才会出来.在JTextField里输入了内容,窗
体最小化了一下再打开,上面已输的内容也不显示了,鼠标选中后才现实.
当时挺十分郁闷,后来静下心来想到,这些JTextField,JButton控件都是在JLable上重叠放置的.应该要有个像
C# 的 Win Form里的设置控件顶置顺序,设置哪个控件在最上一层显示.这里应该设置 这些JTextField,JButton
要再背景JLable上层显示就好了.可翻遍JDK也没找到这样的属性.在网上查了好多资料也没查出个究竟.百思不得
其解.一上午的时间过去了,还是没能解决.郁闷的回去吃饭了.
下午到了教室,对于上午出现的问题还是没一点头绪,就开始从最基本的入手,检查下往窗体添加控件的顺序,看了
一遍感觉没问题,先添加了用于当做背景图片的JLable,然后依次添加了JTextField,JPasswordField,JButton.按
常理应该是没问题的.处于走头五路,想着把他们倒着添加以下试试看,最后再添加这个用作背景的JLable.
不试不知道,一试吓一跳啊,没想到把JLable放到最后一个往窗体里添加竟然问题解决了.
这么简单的问题,竟然折腾了半天的时间.想到了最近经常叨念的那句诗,“众里寻他千百度蓦然回首那人却在灯
火阑珊处”.
总结:
在Swing里想设置一个JLable为窗体的背景图像,在往窗体里添加控件时(add)一定要把该标签放在最后一个添加.