GUI带图片的窗口需要拉伸的时候才会显示的原因
老师实验课上让写一个登录系统的窗口,自己设计的如图:
只是设计一个界面,没啥难度,但是菜鸡的我还是进了一个坑
在调试设计的过程中,一直都是,只有我把窗口拉伸的状态下,才会显示全部内容,
本以为是窗口大小没设置好,结果将窗口调到最大,也还是这样
于是,便开启了疯狂的“菜鸟自救活动”
'在调试过程中,发现用画笔将图片画进去的话,是可以正常显示的,但是在调试过程中,将调试代码删掉了,没能留下来
'但是看到资料上的代码,没有用画笔也会正常显示
顿时我就不服气了,结果就是,试了一下午,然而没有什么用。在网上也找不到答案,终于熬到了第二天上课,问了问老师,看了好大一会,才发现问题(还好错的不是很明显,不然我就羞愤自尽了):
我的底层容器类是这样的
package TB301.demo7.login_system;
import javax.swing.*;
import java.awt.*;
public class MyDemo extends JFrame {
public MyDemo() {
Container container = getContentPane();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setBounds(600,300,400,250);
setVisible(true);
container.setLayout(null);
MyJPanel01 myJPanel01 = new MyJPanel01();
MyJPanel02 myJPanel02 = new MyJPanel02();
MyJButton myJButton = new MyJButton(this);
container.add(myJPanel01);
container.add(myJPanel02);
container.add(myJButton);
myJPanel01.setSize(380,90);
myJPanel02.setBounds(0,100,380,45);
myJButton.setBounds(120,150,180,45);
}
}
不仔细看没啥毛病,仔细一看也没啥毛病(这个人是我菜鸟笨鸟无疑了),那么问题到底出现在那里了?
'原来啊:
在设计底层容器的时候,设置属性要放到最后,先添加上层容器,再设置窗口的基本属性(可见度、大小等等)
调试过后的代码
package TB301.demo7.login_system;
import javax.swing.*;
import java.awt.*;
public class MyDemo extends JFrame {
public MyDemo() {
Container container = getContentPane();
container.setLayout(null);
MyJPanel01 myJPanel01 = new MyJPanel01();
MyJPanel02 myJPanel02 = new MyJPanel02();
MyJButton myJButton = new MyJButton(this);
container.add(myJPanel01);
container.add(myJPanel02);
container.add(myJButton);
myJPanel01.setSize(380,90);
myJPanel02.setBounds(0,100,380,45);
myJButton.setBounds(120,150,180,45);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setBounds(600,300,400,250);
setVisible(true);
}
}
运行效果
虽然很菜没有自己弄出来,但是结果依然是自己掌握了,分享给大家,希望能帮到像我一样的小白们