本文目錄一覽:
- 1、Java 的Frame和Panel的區別
- 2、Java 中的panel()面板有什麼用,怎麼用。
- 3、Java中jpanel與panel有何區別
- 4、java關閉Panel
- 5、JAVA中的JPanel怎麼使用呢?
- 6、如何設置java中panel的大小?
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()的顯示容器的方法。
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;inumCircle;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;icircle.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();
}
}
Java中jpanel與panel有何區別
panel是包java.awt當中的類,Jpanel是包javax.swing當中的類,屬於前者的升級。二者在本質上並沒有太大的區別。
相對AWT圖形用戶界面而言,Swing圖形用戶界面不僅增強了功能,而且減弱了平台相關性,即Swing圖形用戶界面比AWT圖形用戶界面可以克服更多的由於操作系統不同所帶來的在圖形用戶界面或交互方式上的差別。
因此建議使用swing當中的JPanel
java關閉Panel
java中關閉Panel,使用dispose方法,實例如下:
import java.awt.Button;
import java.awt.Color;
import javax.swing.JFrame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class demo2 implements ActionListener {
JFrame nw= new JFrame(“登錄”);
Panel nn=new Panel();
Label a1=new Label(“用戶名”);
Label a2=new Label(“密碼 “);
TextField b1=new TextField(“name “);
TextField b2=new TextField(“password”);
Button n1=new Button(“確定”);
public void run(){
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);
}
public static void main(String[] args){
demo2 e1=new demo2();
e1.run();
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==n1){
JFrame nw1=new JFrame(“信息”);
TextField b3=new TextField(“功能尚未開放”);
nw1.add(b3);
nw1.setSize(200,200);
nw1.setVisible(true);
}
}
}
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,遠程方法調用)。
擴展資料:
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);
}
}
參考資料:
百度百科——JPanel
如何設置java中panel的大小?
JPanel 和Panel都能調用setPreferredSize(Dimension preferredSize);來設置初始大小。
如果是隨窗口變化而變化大小的話,一般不用寫,他會根據父組件的大小自動調整大小。如果要特別設置的話,可以addWindowListener來增加窗口監聽,通過監聽的方式設置。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/232383.html