2013-02-24 242 views
-1

我有一个简单的Java小程序,但面板即使添加后也没有出现,我已经设置了面板的gridlayout和Jpanel的默认布局。Java布局管理不显示面板

import java.io.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
//<applet code="vote.class" width=400 height=200></applet> 
public class vote extends JApplet implements ActionListener 
{ 
JLabel l1,l2,l3; 
JButton b1,b2,b3; 
JPanel mp; 
Panel p1,p2; 

public void init() 
{ 
this.setLayout(null); 
mp=new JPanel(); 
//mp.setLayout(null); 
Panel p1=new Panel(); 
p1.setLayout(null); 
p1.setLayout(new GridLayout(3,3,5,5)); 

l1=new JLabel("test"); 
l2=new JLabel("test2"); 
l3=new JLabel("test2"); 
p1.add(l1); 

p1.add(l2); 
p1.add(l3); 


mp.add(p1); 
add(mp); 
} 
public void actionPerformed(ActionEvent AE) 
{ 
} 
} 

小程序运行空白

编辑: 修改代码的代码现在运行,但即时通讯有点迷糊的布局管理器如何与价值观的网格布局3,3,5,5说,应该有3行3列与5padding.SO 为什么是applet这样

enter image description here

+3

对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。 – 2013-02-24 10:30:58

+0

@AndrewThompson :) – techno 2013-02-24 12:03:35

+0

*“有点困惑,布局管理器如何使用值为3,3,5,5的网格布局表示应该有3行3列使用5padding。”* 3x3是9个组件,而您只添加了3个组件。尝试添加更多。 – 2013-02-24 12:19:30

回答

4

如去低谷代码

this.setLayout(null); // seems to be the problem comment it or provide mp with bounds 

你不应该做setLayout为null

+0

+1它似乎是唯一的问题。 – Arpit 2013-02-24 10:40:24

+0

如果我删除this.setLayout(null);它的工作原理,但你可以回答更新的问题。谢谢 – techno 2013-02-24 12:14:28

4

试试这个代码,而不是。它始终如一地使用布局,只使用Swing组件,将颜色添加到面板以使其更加清晰&已被证实可以工作。

import java.io.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
//<applet code="vote.class" width=400 height=200></applet> 
public class vote extends JApplet 
{ 
    JLabel l1,l2,l3; 
    JButton b1,b2,b3; 
    JPanel mp; 
    // don't mix Swing with AWT components! 
    JPanel p1,p2; 

    public void init() 
    { 
     mp=new JPanel(); 
     mp.setBackground(Color.YELLOW); 
     p1=new JPanel(); 
     p1.setBackground(Color.GREEN); 
     p1.setLayout(new GridLayout(3,3,5,5)); 

     l1=new JLabel("test"); 
     l2=new JLabel("test2"); 
     l3=new JLabel("test2"); 
     p1.add(l1); 
     p1.add(l2); 
     p1.add(l3); 


     mp.add(p1); 
     add(mp); 
    } 
} 
+0

+1教学如何写一个japplet .. – 2013-02-24 10:59:46

+0

@HarmeetSingh:还请注意安德鲁方便的_tag-in-source_注释,说明[这里](http://stackoverflow.com /一个/230513分之7455066)。 – trashgod 2013-02-24 13:32:11

1

我只是增加了流布局,它工作正常。该问题必须是布局的null

public void init() 
{ 
this.setLayout(new FlowLayout()); 
mp=new JPanel(); 
...