當前位置:首頁 » 編程語言 » java的panel

java的panel

發布時間: 2023-03-30 11:23:09

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對象實例,負責放置控制項,需要設置成透明才不會讓自身的底色覆蓋了上層圖片)

熱點內容
瑞納自動買哪個配置 發布:2024-11-02 20:18:45 瀏覽:559
sql復制資料庫結構 發布:2024-11-02 20:18:43 瀏覽:582
yaf編譯 發布:2024-11-02 20:06:30 瀏覽:126
小數除以大數怎麼演算法 發布:2024-11-02 19:44:59 瀏覽:810
安卓手機如何重新設置付款密碼 發布:2024-11-02 19:31:44 瀏覽:980
多巴胺3mg靜脈注射怎麼配置 發布:2024-11-02 19:25:50 瀏覽:618
源碼之城 發布:2024-11-02 19:24:43 瀏覽:513
國軍標環境存儲要求 發布:2024-11-02 19:23:04 瀏覽:107
sql多行轉多列 發布:2024-11-02 19:17:52 瀏覽:119
linuxftp文件夾許可權 發布:2024-11-02 19:17:03 瀏覽:899