javapanel,javapanel顯示中文為方框

本文目錄一覽:

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-tw/n/232383.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 12:50
下一篇 2024-12-11 12:50

相關推薦

  • Python讀取中文

    Python是一種高級編程語言,被廣泛地應用於各種領域中。而處理中文數據也是其中重要的一部分。本文將介紹在Python中如何讀取中文,為大家提供指導和幫助。 一、讀取中文文件 在P…

    編程 2025-04-29
  • jQuery Datatable分頁中文

    jQuery Datatable是一個非常流行的數據表插件,它可以幫助您快速地在頁面上創建搜索、過濾、排序和分頁的數據表格。不過,它的默認設置是英文的,今天我們就來探討如何將jQu…

    編程 2025-04-29
  • Python計算中文字元個數

    本文將從多個方面對Python計算中文字元個數進行詳細的闡述,包括字元串長度計算、正則表達式統計和模塊使用方法等內容。 一、字元串長度計算 在Python中,計算字元串長度是非常容…

    編程 2025-04-29
  • Python3亂碼轉中文

    本文將詳細介紹如何轉換Python3中的亂碼為中文字元,幫助Python3開發工程師更好的處理中文字元的問題。 一、Python3中文亂碼的原因 在Python3中,中文字元使用的…

    編程 2025-04-29
  • 從16進位轉義到中文字元

    16進位轉義是為了在不同的字符集、不同的編碼下,能夠保證特殊字元被正確的識別和渲染。本文將從多個方面對16進位轉義做詳細的闡述,讓讀者對其有更深入的了解。 一、轉義實現 在Web開…

    編程 2025-04-28
  • opendistroforelasticsearch-kibana的中文應用

    本文將介紹opendistroforelasticsearch-kibana在中文應用中的使用方法和注意事項。 一、安裝及配置 1、安裝opendistroforelasticse…

    編程 2025-04-28
  • Python IDLE如何設置中文運行環境

    Python IDLE是Python的集成開發環境,使用它可以方便地編寫、調試和執行Python程序。但是,默認情況下Python IDLE的運行環境是英文環境,如果需要在Pyth…

    編程 2025-04-27
  • Python 中文轉URL編碼

    本文將從以下幾個方面詳細闡述Python中實現中文轉URL編碼的方法及注意事項。 一、URL編碼概述 URL編碼也稱為百分號編碼,是一種將URL中的非ASCII字元轉換成「%」後加…

    編程 2025-04-27
  • 如何用Python輸出兩行中文字元

    在此篇文章中,我們將探討如何使用Python輸出兩行中文字元。具體而言,我們將從以下幾個方面進行闡述: 一、Python中文輸出的基礎知識 在開始探討如何輸出中文字元之前,我們需要…

    編程 2025-04-27
  • Python3.8中文文檔解讀

    Python 是一種解釋型語言、面向對象、動態數據類型的高級語言。 本篇文章旨在詳細闡述 Python3.8 中文文檔,從各個方面深入剖析 Python 的優勢,包括基礎語法、文件…

    編程 2025-04-25

發表回復

登錄後才能評論