您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Java >> jlable和jbutton显示不全

jlable和jbutton显示不全

来源:网络整理     时间:2016/8/4 0:56:29     关键词:

关于网友提出的“ jlable和jbutton显示不全”问题疑问,本网通过在网上对“ jlable和jbutton显示不全”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: jlable和jbutton显示不全
描述:

有一个界面程序,发现一个奇怪的现象,就是下面代码运行之后,jtextfield可以显示,但是jlable和jbutton都显示不了,更奇怪的是,jbutton用鼠标移过去之后又可以显示了,
调试了一下,发现是37-39行代码有问题,我把37-39行代码放在构造方法的下方,
就可以正常显示了
虽然找到显示不全的地方,但是不理解这个是为什么?
为什么把这个b1 jpanel的3行代码移到后面就可以正常显示了呢?
37-39行
101-103行代码
 BackImage b1 = new BackImage();
        b1.setBounds(0, 0, 360, 360);
        this.add(b1);

package com.view;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.util.prefs.BackingStoreException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class UserLogin extends JDialog{
// 定义需要的组件
JLabel jl1, jl2, jl3;
JTextField jName;
JPasswordField jPasswd;
JButton jCon, jCancel;
public static void main(String[] args) {
UserLogin u1 = new UserLogin();
}
public UserLogin()
{
this.setLayout(null);
Font f1=new Font("宋体",Font.PLAIN, 16);
//在创建一款字体
Font f2=new Font("宋体",Font.PLAIN, 14);
//不能将这个放在前面,要放在最后面,否则显示不正常
BackImage b1 = new BackImage();
b1.setBounds(0, 0, 360, 360);
this.add(b1);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation(width/2-200, height/2-150);
//Container ct=this.getContentPane();
//创建组件
jl1=new JLabel("请输入用户名");
jl1.setBounds(60, 190, 150, 15);
jl1.setFont(f1);
//放入
this.add(jl1);
jName=new JTextField(20);
jName.setFont(f1);
jName.setBounds(180, 190,120 , 30);
//设置下凹的感觉
jName.setBorder(BorderFactory.createLoweredBevelBorder());
this.add(jName);
jl2=new JLabel ("(员工号)");
jl2.setFont(f2);
//设置前景色
jl2.setForeground(Color.red);
jl2.setBounds(100, 210, 100, 30);
this.add(jl2);
// 提示输入密码
jl3 = new JLabel("请输入密码");
jl3.setFont(f1);
jl3.setBounds(60, 240, 150, 30);
this.add(jl3);
// 密码框
jPasswd = new JPasswordField(20);
jPasswd.setFont(f1);
jPasswd.setBounds(180, 240, 120, 30);
// 设置下凹的感觉
jPasswd.setBorder(BorderFactory.createLoweredBevelBorder());
this.add(jPasswd);
jCon=new JButton("确定");
jCon.setFont(f1);
jCon.setBounds(110, 300, 70, 30);
//放入到容器
this.add(jCon);
//加入取消按钮
jCancel=new JButton("取消");
jCancel.setFont(f1);
jCancel.setBounds(220, 300, 70, 30);
this.add(jCancel);
// BackImage b1 = new BackImage();
// b1.setBounds(0, 0, 360, 360);
// this.add(b1);
//基本设置
this.setUndecorated(true);
this.setSize(360, 360);
this.setVisible(true);
}
class BackImage extends JPanel
{
Image im;
public BackImage()
{
try {
im = ImageIO.read(new File("image//login.gif"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void paintComponent(Graphics g)
{
g.drawImage(im, 0, 0, 360,360,this);
}
}
}


解决方案1:

布局的问题,你应该全部用的都是绝对布局吧。
解决方案:在绝对布局里面添加网式,或者流式布局等其他一些布局(根据需求)。

解决方案2:

你放在44行后面 看是不是也能正常显示?


以上介绍了“ jlable和jbutton显示不全”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3102332.html

相关图片

相关文章