Java 中的panel()面板有什么用,怎么用。

Python016

Java 中的panel()面板有什么用,怎么用。,第1张

//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=0i<numCirclei++){ // 创建圆的实例

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=0i<circle.lengthi++){

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()

}

}

import javax.swing.*

public class baiduzhidao1 {

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对象实例,负责放置控件,需要设置成透明才不会让自身的底色覆盖了上层图片)

可以这样理解吧:就是pane是java中的一个控件,是不具备包含其他控件的功能的;而panel虽然也是一个控件,但是它还有一个身份就是布局,它可以管理其他的控件。如果做过android开发的话,理解起来可能要容易一些。