java编程JPanel上加JPanel,为什么设了null布局之后什么都不显示

在下面这个类中,的监控事件里添加更新了panelpublicclassWelcomeextendsJFrameimplementsActionListener,Mouse... 在下面这个类中,的监控事件里添加更新了panel
public class Welcome extends JFrame implements ActionListener ,MouseListener{
JLabel label1,label2;
JButton sure;
JTextField unm;
JPasswordField pwd;
Connection conn;
JLabel viplog,vipzc,jc,tz;
Image cur = new ImageIcon("./img/首页/arrow.png").getImage();
morenpanel mpanel=new morenpanel();
viploginPanel vi=new viploginPanel();
final JPanel rPanel = new JPanel();
public Welcome()
{
init();
add();
setVisible(true);
//点关闭按钮时退出
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

void add()
{

ImageIcon v = new ImageIcon("./img/首页/会员登录3.jpg");
viplog=new JLabel(v);
viplog.setBounds(50,120,170,70);
viplog.addMouseListener(this);
//viplog.setEnabled(false);

this.add(viplog);

//this.add(mpanel);
}
@Override
public void actionPerformed(ActionEvent e) {

}
@Override
public void mouseClicked(MouseEvent e) {
if(e.getSource()==viplog)
{
viplog.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(cur, new Point(), null));
rPanel.removeAll();
rPanel.setLocation(250, 80);
//rPanel.setPreferredSize()
rPanel.add(new viploginPanel(),BorderLayout.CENTER);
//SwingUtilities.updateComponentTreeUI(rPanel);
rPanel.validate();
}
if(e.getSource()==viplog)
{
vipzc.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(cur, new Point(), null));
}
if(e.getSource()==jc)
{
jc.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(cur, new Point(), null));
}
if(e.getSource()==tz)
{
tz.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(cur, new Point(), null));
}

}
@Override
public void mousePressed(MouseEvent e) {

}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}

}
更新的panel源码:

public class viploginPanel extends JPanel{
viploginPanel()
{
init();
}
void init()
{
this.setLayout(null);//这句话一加这个界面就不显示了,求修改代码,因为我还想用null布局

JButton b=new JButton("123");
b.setBounds(50,50,200,200);
this.add(b);
this.add(new JButton("123456"));
//this.setVisible(true);
// this.setOpaque(true);
this.setBackground(Color.white);
this.setVisible(true);

}
}
展开
 我来答
bvg_Winnir
推荐于2017-10-08 · TA获得超过153个赞
知道小有建树答主
回答量:288
采纳率:50%
帮助的人:257万
展开全部
  1. 首先需要把你需要添加在这个jpanel上的控件添加到这个面板上`

  2. 其次`jpanel默认的是,流动布局,默认居中

  3. 如果设置了这个jpanel的布局为null,即无布局,那么需要给你添加在这个面板上的控件设置位置和尺寸大小.

  4. 最后需要设置frame的显示属性为true

ztw1122
2015-05-28 · TA获得超过1088个赞
知道小有建树答主
回答量:2382
采纳率:80%
帮助的人:949万
展开全部
JPanel默认属性 下 你是什么都看不到的。
null布局下控件都必须用绝对定位,不然就没有。
最常用的定位方法是setBounds(x, y, width, height);控件都有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-31
展开全部
if(e.getSource()==tz){
先看到一点,,对象的比较,不要使用==

JLabel 更新一下

viplog.setBounds(50,120,170,70);
viplog.addMouseListener(this);
//viplog.setEnabled(false);
this.add(viplog);
//this.add(mpanel);
viplog.updateUI(); ////////////////////////////////////////////////这
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wh猎人
2014-12-31 · TA获得超过1125个赞
知道大有可为答主
回答量:1157
采纳率:89%
帮助的人:664万
展开全部

写了个简单例子没有发现问题,给你参考下:

public class Welcome extends JFrame {
  static class viploginPanel extends JPanel {
    viploginPanel() {
      this.setLayout(null);// 没有发现问题
      JButton b = new JButton("123");
      b.setBounds(50, 50, 200, 200);
      this.add(b);
      b = new JButton("123456");
      b.setBounds(250, 300, 100, 20);// 这个按钮也要显示设置bound
      this.add(b);
      this.setBackground(Color.white);
    }
  }
  public static void main(String[] args) {
    Welcome f = new Welcome();
    f.add(new viploginPanel());
    f.setSize(400, 400);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
  }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式