关于java JPanel 里面 add (字符串,组件)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java JPanel 里面 add (字符串,组件)相关的知识,希望对你有一定的参考价值。

for(int i=0;i<10;i++)
myPanel[i]=new MyPanel(i+1);
p.add("A"+i,myPanel[i]);

这个语句中
p.add("A"+i,myPanel[i]); “A”+i 有什么用
是什么意思 为什么我在我的整个代码里面去掉这个后就不显示了
求各位大侠帮帮忙
一般 Jpanel的类的 add 方法 在什么情况下
用add(字符串,组件)形式

"A"+i是容器myPanel[i]的名字 。

myPanel[i]这个是一个容器对象,在容器的调用过程中,如果一直使用容器对象是很不方便的。所以在add()方法中,可以给容器添加一个字符串作为它的名字用以区分其他容器 。而此时这个容器的名字就是Ai。

p.add("A"+i,myPanel[i]);这句代码的作用是:在你声明了一个myPanel[i]时,你并没有使用它,你必须使用add()函数把它添加进你的JPanel中,这样才能显示出来。追问

"A"+i 这个我去掉后为什么 myPane[i]就不显示了

一般 Jpanel的类的 add 方法 在什么情况下
用add(字符串,组件)形式

追答

add()方法第一个参数必须要有。但是你可以自己改。

在add方法之后,应该还有show()方法吧?show()方法中要用到组件的名字:"A"+i

把"A"+i改了之后必须在show()里面也改。才能显示出来

追问

额 没有show()呢
这段代码是我书上的一个例子
JPanel 的add()不是有两种形式吗
一种是 add(组件)
一种是 add(字符串,组件)
为什么 我的这个用第一种就不显示 而一定要用 字符串的那种才显示呢

追答

刚才查过api了,
add(Component comp)
将指定组件追加到此容器的尾部。

add(String name, Component comp)
将指定组件添加到此容器中。

因为只含组件参数时是追加到容器的底部的原因吧。

show()的方法是在卡片布局中切换到其他卡片用的。

追问

教材上面写的这两种形式额~~
例子上面也没用到你说的 show()方法

追答

刚才查过api了,

add(Component comp)
将指定组件追加到此容器的尾部。

add(String name, Component comp)
将指定组件添加到此容器中。

因为只含组件参数时是追加到容器的底部的原因吧。

追问

额 还是不太明白

参考技术A "A"+i相当于是myPanel[i]的名字。用于区分i个myPanel[i]。

在声明了一个 自定义的容器后,你仅仅是声明了它,但是没有把它添加到JPanel中。当然不会显示了。使用p.add(字符串 A,子容器对象 B)的方法。字符串A相当于就是myPanel[i]的名字,用于区分其他容器。myPanel[i]是一个容器对象。
参考技术B p.add("A"+i,myPanel[i]);
你是 ("A"+i,myPanel[i]); 反了吧 "A"+i 是个字符串 add 第一个参数 是类 不是字符串追问

没反 程序是对的

Java中的JPanel与JFrame

【中文标题】Java中的JPanel与JFrame【英文标题】:JPanel vs JFrame in Java 【发布时间】:2012-10-24 03:03:26 【问题描述】:

我正在学习 Java gui。我学习创建窗口的方法是继承或扩展JFrame 类,使用它很好,因为JFrame 包含窗口的所有属性。现在如果我想在这个窗口中添加一些东西,我需要使用add() 方法。但是今天我遇到了JPanel,它也创建了一个窗口,我们可以通过jpanelObjec.add() 添加东西。

这两种方法有什么区别?它们有什么关联吗?

【问题讨论】:

类似问题:***.com/questions/3497889/… 【参考方案1】:

您不应不必要地扩展 JFrame 类(仅当您向 JFrame 类添加额外功能时)

JFrame

JFrame 扩展了 ComponentContainer

它是一个***容器,用于表示一个窗口的最低要求。这包括Borders、可调整大小(JFrame 是否可调整大小?)、标题栏、控件(允许最小化/最大化?)和各种Events 的事件处理程序,如windowClosewindowOpened 等。

JPanel

JPanel 扩展 ComponentContainerJComponent

它是一个通用类,用于将其他Components 组合在一起。

在使用 LayoutManagers 时很有用,例如GridLayout f.i 将组件添加到不同的 JPanels,然后将其添加到 JFrame 以创建 gui。就Layout 和可重用性而言,它将更易于管理。

这对于在 Swing 中绘画/绘图时也很有用,您可以覆盖 paintComponent(..),当然还有双缓冲的全部乐趣。

如果没有***容器(如(JWindowWindowJFrameFrameApplet),Swing GUI 就无法存在,而没有JPanels 则它可能存在。

【讨论】:

实际上,JFrame 并没有扩展 JComponentJContainer【参考方案2】:

JFrame 是窗口;它里面可以有一个或多个JPanel 实例。 JPanel 不是窗口。

你需要一个 Swing 教程:

http://docs.oracle.com/javase/tutorial/uiswing/

【讨论】:

以上是关于关于java JPanel 里面 add (字符串,组件)的主要内容,如果未能解决你的问题,请参考以下文章

Java Swing关于界面刷新的问题!!

使用 JPanel 引用更改子组件?

Swing中怎样给Jpanel添加滚动条

java swing JPanel添加在JScrollPane上,有垂直的滚动条,可是滚动条拉到底,只显示了JPanel的一部分。

关于JPanel函数的关注点:paintcomponent()

Java中的JPanel填充