java的panel
1. java中,Frame和Panel默认的布局管理器分别是什么类型
JAVA中,Framel默认的布局管理器是BorderLayout类型,Panel默认的布局管理器是FlowLayout类型。
FlowLayout是Panel 和 Applet 的默认布局管理器。在该布局管理器中,组件在容器中按照从上到下,从左到右的顺序进行排列,行满后则换行。
BorderLayout是Window、Frame和Dialog的默认布局管理器,其将容器分成North、South、East、West和Center 5个区域,每个区域只能放置一个组件。使用BorderLayout时,如果容器大小发生变换,组件的相对位置不变。
(1)java的panel扩展阅读:
其它相关的布局管理器:
1、网格布局管理器(GridLayout):
GridLayout 可使容器中的各个组件呈网格状布局,平局占据容器的空间,即使容器的大小发生变化,每个组件还是平均占据容器的空间。和FlowLayout一样,GridLayout也是按照从上到下,从左到右的规律进行排列的。
2、卡片布局管理器(CardLayout):
CardLayout能够帮助用户处理两个乃至跟多的成员共享同一显示空间。它把容器分成许多层,每层的显示空间占据整个容器的大小,并且每层之允许反之一个组件,可以通过Panel来实现每层复杂的用户界面。
2. java关闭Panel
java中关闭Panel,使用dispose方法,实例如下:
importjava.awt.Button;
importjava.awt.Color;
importjavax.swing.JFrame;
importjava.awt.Label;
importjava.awt.Panel;
importjava.awt.TextField;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
public猛旦{
JFramenw=newJFrame("登录");
Panelnn=newPanel();
Labela1=newLabel("态巧用户名");
Labela2=newLabel("密码");
TextFieldb1=newTextField("name");
TextFieldb2=newTextField("password");
Buttonn1=newButton("帆知键确定");
publicvoidrun(){
nn.add(a1);
nn.add(b1);
nn.add(a2);
b2.setEchoChar('*');
n1.addActionListener(this);
nn.add(b2);
nn.add(n1);
nw.add(nn);
nw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
nw.setBackground(Color.cyan);
nw.setSize(300,300);
nw.setVisible(true);
}
publicstaticvoidmain(String[]args){
demo2e1=newdemo2();
e1.run();
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==n1){
JFramenw1=newJFrame("信息");
TextFieldb3=newTextField("功能尚未开放");
nw1.add(b3);
nw1.setSize(200,200);
nw1.setVisible(true);
}
}
}
3. Java 中的panel()面板有什么用,怎么用。
//Jpanel和panel都为中间层容器,可显示文字、图像、绘制图形,主要功能是
在GUI中组织其他组件。但无边框,丌能做独立窗口。以Jpanel为例,给一个曾经的实例
//MyPanel.java
import java.awt.*;
import javax.swing.*;
import java.util.Random;
public class MyPanel extends JPanel {
private Circle circle[];
public MyPanel() {
setBackground(Color.black); // 面板背景色
setPreferredSize(new Dimension(600,450)); // 面板大小
int numCircle=new Random().nextInt(6)+5;
//int numCircle=circle.length;
circle=new Circle[numCircle];
for(int i=0;i<numCircle;i++){ // 创建圆的实例
Color color=new Color(new Random().nextInt(256),new Random().nextInt(256),new Random().nextInt(256));
circle[i]=new Circle(new Random().nextInt(50)+10,color,new Random().nextInt(420)+61,new Random().nextInt(320)+61);
}
}
/* 每个JPanel对象都有painComponent方法,绘制添加在容器上的组件, 在
* 组件首次显示或重新显示时被自动调用。
*/
public void paintComponent(Graphics g) {
super.paintComponent(g);
// 调用父类方法, 清空画布,绘制背景色
setFont(new Font ("Times New Roman",Font.BOLD,20)); // 设置字体
g.setColor(Color.pink);
g.drawString("Hello World!",250,200);
for(int i=0;i<circle.length;i++){
circle[i].draw(g);
}
}
}
//Circle.java
import java.awt.*;
/**此类定义了绘制圆的基本方法
*@author JF
*@version 1.0
*/
public class Circle {
// 直径和圆外接正方形左上角坐标
private int diameter,x,y;
// 指定圆的大小和位置
private Color color; // 颜色
public Circle(){
}
/**构造函数,设置圆类的属性
*@param int diameter,Color color,int x,int y
*@return none
*/
Circle(int diameter,Color color,int x,int y ){
this.diameter=diameter;
this.color=color;
this.x=x;
this.y=y;
}
/**填充圆类
*@param Graphics
*@return none
*/
public void draw(Graphics g){
g.setColor(color);
g.fillOval(x,y,diameter,diameter);
}
}
//MyCircle.java
import javax.swing.*;
public class MyCircle{
public static void main(String[] args){
JFrame f=new JFrame("Circle");
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(new MyPanel());
f.pack();
}
}
4. java中的panel和window有什么不同
可以这样理解吧:就是pane是java中的一个控件,是不具备包含其他控件的功能的;而panel虽然也是一个控件,但是它还有一个身份就是布局,它可以管理其他的控件。如果做过android开发的话,理解起来可能要容易一些。
5. JAVA中的JPanel怎么使用呢
使用方法:
JPanel可以为添加到窗体中的轻型控件提供通用的容器。默认情况下,面板容器不会向控件添加任何除自身背景之外的颜色,但是,可以轻松地向其添加边框(borders)并根据需要改制样式。
在大多数Java GUI外观体验(look and feel)中,面板容器默认是不透明。不透明的面板容器跟普通的目录窗格功能差别不大,并且可以有效帮助样式改进。
设置图层管理器
和其他容器(container)一样,面板容器panel也使用布局管理器(Layout Manager)对添加到容器中的组件(compnent)进行定位和设置尺寸大小。
默认情况下,面板容器的布局管理器是FlowLayout(流式布局)类的一个实例,这个类对放置在容器中的空间按行进行布局(从左到右诸行排列)。在创建面板容器时,你可以轻松地使用任何其他
布局管理器通过调用setLayout方法或指定一个布局管理器。
如下是一个在创建面板容器时设置图层管理器的例子:
JPanel p=new JPanel(new BorderLayout());
但这种方法不能用在BoxLayout(盒子布局)中,因为BoxLayout构造器需要一个预留(pre-existing)容器。如下所示:
JPanel p=new JPanel();
p.setLayout(new BoxLayout(p,BoxLayout.PAGE_AXIS));
添加控件
向面板容器中添加组件时使用add()方法,而向add()方法中传递的参数决定于该面板容器使用哪个布局管理器。当所用的布局管理器是FlowLayout,BoxLayout,GridLayout,或SpringLayout时,像通常那样向add()方法传递单一的参数即可,如下所示:
aFlowPanel.add(aComponent);
aFlowPanel.add(anotherComponent);
而当布局管理枣毕器为BorderLayout时,还亮没需要提供另一个参数来指定添加到容器中控件的位置,例如:
aBorderPanel.add(aComponent,BorderLayout.CENTER);
aBorderPanel.add(anotherComponent,BorderLayout.PAGE_END);
对于GridBagLayout布局管理器,可以使用上述任一方法,但必须以某种方式对每个组件指定GridBagConstraints,例如:
JPanel pane=new JPanel(new GridBagLayout());
GridBagConstraints c=new GridBagConstraints();
警告
Swing不是线程安全的。
此类的序列化对象与以后的Swing版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同Swing版本的应用程序之间进行RMI(Remote Method Invocation,远程方法调用)。
(5)java的panel扩展阅读:
JPanel一个面板敬岩纳也是一个容器JPanel Pan=new JPanel();
Pan.setLayout(null);//设置为空布局也就是自由布局
Pan.add(控件);//添加控件
JPanel是java图形化界面中最常使用的容器。实例:在窗体中添加一个蓝色的面板
//PanelDemo.java
import javax.swing.*;
import java.awt.*;//引入AWT包,因为要使用到颜色类
class PanelDemo{
public static void main(String[]args)throws Exception
{JFrame f=new JFrame("第一个Java窗口");
f.setSize(300,200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.setResizable(false);
f.setLocationRelativeTo(null);
f.setLayout(null);//设置窗体布局为空布局
JPanel p=new JPanel();//实例化一个面板
//设置面板背景色为蓝色,如果不引入AWT包,程序将出错,可以试试看
p.setBackground(Color.BLUE);
p.setSize(100,100);//设置面板对象大小
f.getContentPane().add(p);//将面板添加到窗体中
//如果使用下面添加面板的方法,面板将布满整个窗口,可以试试看
//f.setContentPane(p);
}
}
6. Java 的Frame和Panel的区别
[Panel]
Panel is the simplest container class. A panel provides space in which an ap
plication can attach any other component, including other panels.
<详见java.awt.Panel>
<注意:以下大写指类,小写泛指对象,比如Frame指Frame类,frame泛指Frame对象。>
好象是看出区别了:Frame是Window的子类,一个Frame对象就是一个有标题有边界
的顶层窗口。Panel是最简单的容器类,是Container的子类。一个Panel对象就是要给应
用程序提供空间,用来添加组件,包括其它的Panel对象。
追本溯源,其实Frame和Panel还是有些亲戚关系的:Frame是Window的直接子类,W
indow又是Container的直接子类,而Panel是Container的直接子类,它们都是从Contai
ner里扩展出来的,是叔侄关系。它们的老祖宗是Component(Container是Component的
子类),Component是基类,回溯本源到此为止,已经是根了。
Frame和Panel都是容器类,那么它们在使用上有什么区别呢?
你可以创建一个panel对象,在上面添加组件,比如单独建立一个TestPanel.java
的源文件(TestPanel extends Panel)。但是因为Panel不是顶层容器,所以你不能直
接显示你创建的这个panel对象,必须装在顶层容器里比如嵌入一个frame里,才能显示
。(为什么Frame对象可以直接显示,而Panel对象不能,文章最后有解释。)
Frame是顶层容器,一般不单独使用(注意只是一般,还是可以直接嵌入组件的),而是
习惯在frame里嵌入panel,再在panel上面添加组件。你在用Jbuilder创建一个Applica
tion(比如TestApp和TestAppFrame)的时候,在你的框架文件TestAppFrame里就会自动
生成一个叫contentPane的JPanel对象。
Panel是一般容器,可以自身嵌套(比如在panel1里嵌入panel2);但Frame已经是
顶层容器了,自身不能嵌套。
我们用得最多的JFrame和JPanel,就是Frame和Panel在Swing下的扩展(JFrame是Fr
ame子类和JPanel是Panel的子类)。
我们用Jbuilder创建Application时会自动生成一些代码,其中的frame.pack()一句
是什么意思?<注:frame是一个已生成的框架类对象>
我们在java.awt.Frame的源文件里找不到pack()方法的定义。看了java.awt.Window
才知
道,原来在Window类里定义了pack()和show()两个显示窗口的方法,被Frame继承了过来
。这可能也是panel无法单独使用的一个原因吧,Panel和它的直接超类Container里,都
没有定义类似pack()和show()的显示容器的方法。
7. java中怎样让panel完全透明,只显示上面的图片
import javax.swing.* ;
public class 1 {
public static void main(String args[]){
ImageIcon img = new ImageIcon("1.jpg"); /*负责显示图像的JLable对象j1*/
JLabel jl = new JLabel(img);
JPanel j = new JPanel() ; /*在JFrame上add上面板j*/
JFrame jf = new JFrame() ;
jf.setContentPane(j) ;
j.add(jl) ; /*在面板j上add上JLable对象j1*/
JPanel jjj = new JPanel() ; /*创建一个透模键明的面板放在JLable对象j1上负责放控件,此例中放置了一个按钮*/
jl.add(jjj) ;
jjj.setSize(200, 100) ; /*这里注意要设置大小*/
jjj.setOpaque(false) ; /*将负责放置旦碧巧控件的面板设置成透明,详细请查API*/
jjj.add(new JButton("确定")) ; /*添加按钮*/
jf.setVisible(true) ;
jf.setSize(500, 300) ;
}
}
容器从顶层开始顺序如下:
jf(JFrame对象实例) --> j (JPanel对慧答象实例,无须设置透明) --> j1(JLable对象实例,负责显示图片)
--> jjj(JPanel对象实例,负责放置控件,需要设置成透明才不会让自身的底色覆盖了上层图片)