在JFrame中加入自定义面板

lll517430947lll 2013-12-25 10:24:12
这个是自己定义的面板:
class Startpanel extends JPanel
{
JPanel jp1,jp2;//贪吃蛇的活动范围 信息记录
JPanel jp;//包含jp1,jp2
JLabel jl1,jl2;//等级 分数
JTextField jtf1,jtf2;//等级 分数
public Startpanel()
{
jl1=new JLabel("等级");
jl2=new JLabel("分数");
jtf1=new JTextField();
jtf2=new JTextField();

jp1=new JPanel();//贪吃蛇活动范围
jp1.setBackground(Color.black);
jp1.setBounds(0, 0,500, 400);

jp2=new JPanel();//信息记录区域
jp2.add(jl1);
jp2.add(jtf1);
jp2.add(jl2);
jp2.add(jtf2);
jp2.setLayout(new GridLayout(6,1));

jp=new JPanel();
jp.add(jp1);
jp.add(jp2);
}
public void paint(Graphics g)
{
super.paint(g);

}
}
这个是继承JFrame的类 怎么在这将上面的面板加进来啊??????
public class SnakeMain extends JFrame
{
public static void main(String[] args) {
// TODO Auto-generated method stub

}
}
...全文
302 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
solomon5926 2013-12-26
  • 打赏
  • 举报
回复
布局调整最烦人了,我找了半天没找到你的问题在哪里,你这个代码的写法挺不适应,就给你写了一个,算是调出来了,你参考参考吧

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class SnakeMain extends JFrame
{
	private JPanel jPanel1; //活动范围
	private JPanel jPanel2; //信息记录
	
	private JLabel jLabel1; //等级标签
	private JLabel jLabel2; //分数标签
	
	private JTextField jTextField1; //等级显示框
	private JTextField jTextField2; //分数显示框
	
	public SnakeMain()
	{
		jLabel1 = new JLabel("等级");
		jLabel2 = new JLabel("分数");
		jTextField1 = new JTextField(5);
		jTextField2 = new JTextField(5);
		
		jPanel2 = new JPanel();
		jPanel2.add(jLabel1);
		jPanel2.add(jTextField1);
		jPanel2.add(jLabel2);
		jPanel2.add(jTextField2);
		
		jPanel1 = new JPanel();
		jPanel1.setSize(400, 400);
		jPanel2.setSize(400, 400);
		jPanel1.setBackground(Color.BLACK);
		
		this.add(jPanel1,BorderLayout.CENTER);
		this.add(jPanel2,BorderLayout.EAST);
		
		this.setSize(800, 400);
		this.setVisible(true);
	}
	public static void main(String[] args)
	{
		new SnakeMain();
	}
}

lll517430947lll 2013-12-26
  • 打赏
  • 举报
回复
引用 3 楼 solomon5926 的回复:
[quote=引用 2 楼 lll517430947lll 的回复:] 我直接在主类的构造函数中定义该面板sp 然后再this.add(sp.jp) 最后在主函数中初始化该类的一个对象 但是显示是这样的 不知道是哪里出问题了
布局问题,你没有布局好,再调整调整就好了[/quote] jp1.setBounds(0, 0,500, 400);我这边用了500 400 不可能会出现那么小的黑框啊
solomon5926 2013-12-26
  • 打赏
  • 举报
回复
引用 2 楼 lll517430947lll 的回复:
我直接在主类的构造函数中定义该面板sp 然后再this.add(sp.jp) 最后在主函数中初始化该类的一个对象 但是显示是这样的 不知道是哪里出问题了
布局问题,你没有布局好,再调整调整就好了
lll517430947lll 2013-12-26
  • 打赏
  • 举报
回复
我直接在主类的构造函数中定义该面板sp 然后再this.add(sp.jp) 最后在主函数中初始化该类的一个对象 但是显示是这样的
不知道是哪里出问题了
Code研究者 2013-12-26
  • 打赏
  • 举报
回复
你可以参考这一篇,看看他的源码,仿照一下,你也可以做的很漂亮 界面编程模仿篇(QQ登录界面逼真篇)
幽饮烛 2013-12-25
  • 打赏
  • 举报
回复
可以参考 JDK 的 API,里面有一段: JFrame 类与 Frame 轻微不兼容。与其他所有 JFC/Swing 顶层容器一样,JFrame 包含一个 JRootPane 作为其唯一的子容器。根据规定,根窗格所提供的内容窗格应该包含 JFrame 所显示的所有非菜单组件。这不同于 AWT Frame。为了方便地使用 add 及其变体,已经重写了 remove 和 setLayout,以在必要时将其转发到 contentPane。这意味着可以编写: frame.add(child); 子级将被添加到 contentPane。内容窗格始终是非 null 的。试图将其设置为 null 会导致 JFrame 抛出异常。默认的内容窗格上会设置有 BorderLayout 管理器。有关添加、移除和设置 JFrame 的 LayoutManager 的详细信息,请参阅 RootPaneContainer。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧