本文已参与[新人创作礼]活动,一起开启掘金创作之路。
哈喽,大家好!我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在掘金上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。 本文主要讲解GUI带图片的窗口需要拉伸的时候才会显示的原因,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎 ❤️点赞👍、收藏⭐、留言💬 ✨✨✨个人主页:JinHuan
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);
}
}
运行效果
虽然很菜没有自己弄出来,但是结果依然是自己掌握了,分享给大家,希望能帮到像我一样的小白们。另外,我自己整理了一些自资源(笔记、书籍、软件等)分享在我的公众号上,非常欢迎大家来访白嫖和博主做朋友,一起学习进步!最后别忘啦支持一下博主哦,求三连!❤️❤️❤️