package yangwei.ticket;import java.awt.Container;
import java.awt.FlowLayout;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class JPanelTest extends JPanel{
public JPanelTest()
{
setLayout(null);
}
public static void main(String [] args)
{
JFrame FrameTest = new JFrame();
JButton button1 = new JButton();
JButton button2 = new JButton();
button1.setBounds(50, 50, 50, 50);
button2.setBounds(100, 50, 50, 50);
JPanelTest testpanel = new JPanelTest();
// testpanel.setLayout(new FlowLayout());
testpanel.setLayout(null);
testpanel.add(button1);
testpanel.add(button2);
FrameTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FrameTest.setSize(500,500);
FrameTest.setLayout(null);//注释掉这一句Buttons就可以显示了
FrameTest.add(testpanel);
FrameTest.setVisible(true);
}}就比如上面这段代码当把JPanel和JFrame的布局同时设置为null时JPanel中的button就不能显示了,但如果把JFrame
中的
FrameTest.setLayout(null)
注释掉就没有问题了,请问这个是为什么呢?有人能解释下吗?
import java.awt.FlowLayout;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class JPanelTest extends JPanel{
public JPanelTest()
{
setLayout(null);
}
public static void main(String [] args)
{
JFrame FrameTest = new JFrame();
JButton button1 = new JButton();
JButton button2 = new JButton();
button1.setBounds(50, 50, 50, 50);
button2.setBounds(100, 50, 50, 50);
JPanelTest testpanel = new JPanelTest();
// testpanel.setLayout(new FlowLayout());
testpanel.setLayout(null);
testpanel.add(button1);
testpanel.add(button2);
FrameTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FrameTest.setSize(500,500);
FrameTest.setLayout(null);//注释掉这一句Buttons就可以显示了
FrameTest.add(testpanel);
FrameTest.setVisible(true);
}}就比如上面这段代码当把JPanel和JFrame的布局同时设置为null时JPanel中的button就不能显示了,但如果把JFrame
中的
FrameTest.setLayout(null)
注释掉就没有问题了,请问这个是为什么呢?有人能解释下吗?
button2.setBounds(100, 50, 50, 50);我这2个地方不是设置了么?
但是还是不显示了呢?
* @Title: TicketPanel.java
* @Package src.com.fornew.tvm.ui.userui.mapcontrol.map;
* @Description: 线路选择面板
* @Company:四川久远新方向
* @author YangWei
* @date 2012-9-16 下午13:00:00
* @version V1.0
*/package src.com.fornew.tvm.ui.userui.mapcontrol.ticket;import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;import src.com.fornew.tvm.ui.userui.mapcontrol.control.TvmFrame;import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;public class TicketPanel extends JPanel {
/**
* @ClassName: NodeEntityCollection
* @Description: 线路选择面板
* @author YangWei
* @date 2012-9-16 下午13:00:00
*
*/
private static final long serialVersionUID = 1L; private static int ticketWeight = TvmFrame.ScreenSize.width / 4; private static int ticketHeight = TvmFrame.ScreenSize.height ; private JButton oneYuan ; private JButton twoYuan; private JButton threeYuan; private JButton fourYuan; private JButton fiveYuan; private JButton sixYuan; private JButton sevenYuan; private JButton more;
private JButton Englis_Chiness;
private JButton Recharge;
private JButton cancel; public TicketPanel() {// setLayout(new FlowLayout());
setLayout(null);
// setBackground(Color.blue);
setBounds(3 * TvmFrame.ScreenSize.width / 4, 0, ticketWeight,ticketHeight);
init();
add(Englis_Chiness);
setVisible(true);
}
public void init()
{
oneYuan = new JButton("1元");
twoYuan = new JButton("2元");
threeYuan = new JButton("3元");
fourYuan = new JButton("4元");
fiveYuan = new JButton("5元");
sixYuan = new JButton("6元");
sevenYuan = new JButton("7元");
more = new JButton("更多");
Englis_Chiness = new JButton("English");
Englis_Chiness.setBounds(3*ticketWeight+10, 10, ticketWeight-10,50 );
Recharge = new JButton("充值");
cancel = new JButton("交易取消");
}
public static void main(String [] args)
{
JFrame f = new JFrame();
f.setTitle("test");
f.setBounds(0,0,TvmFrame.ScreenSize.width,TvmFrame.ScreenSize.height);
f.setLayout(null);
f.setVisible(true);
f.add(new TicketPanel());
f.repaint();
}
}
这样为什么不能添加Button呢?