日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

發(fā)布時間:2024/1/18 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

???????? 網(wǎng)格布局特點(diǎn):

l? 使容器中的各組件呈M行×N列的網(wǎng)格狀分布。

l? 網(wǎng)格每列寬度相同,等于容器的寬度除以網(wǎng)格的列數(shù)。

l? 網(wǎng)格每行高度相同,等于容器的高度除以網(wǎng)格的行數(shù)。

l? 各組件的排列方式為:從上到下,從左到右。

l? 組件放入容器的次序決定了它在容器中的位置。

l? 容器大小改變時,組件的相對位置不變,大小會改變。

l? 設(shè)置網(wǎng)格布局行數(shù)和列數(shù)時,行數(shù)或者列數(shù)可以有一個為零。若rows0cols3,則列數(shù)固定為3,行數(shù)不限,每行只能放3個控件或容器。若cols0rows3,則行數(shù)固定為3,列數(shù)不限,且每行必定有控件,若組件個數(shù)不能整除行數(shù),則除去最后一行外的所有行組件個數(shù)為:Math.ceil(組件個數(shù)/rows)。

Math.ceil(double x):傳回不小于x的最小整數(shù)值。比如行數(shù)為3,組件數(shù)為13個,則Math.ceil(13/3)=5,即第一行,第二行組件數(shù)各為5個,剩下的組件放在最后一行。

l? 若組件數(shù)超過網(wǎng)格設(shè)定的個數(shù),則布局管理器會自動增加網(wǎng)格個數(shù),原則是保持行數(shù)不變。

?

?

構(gòu)造方法摘要

GridLayout()?創(chuàng)建具有默認(rèn)值的網(wǎng)格布局,即每個組件占據(jù)一行一列。

GridLayout(int?rows, int?cols) :

創(chuàng)建具有指定行數(shù)和列數(shù)的網(wǎng)格布局。Rows為行數(shù),cols為列數(shù)。

GridLayout(int?rows, int?cols, int?hgap, int?vgap) :

創(chuàng)建具有指定行數(shù)、列數(shù)以及組件水平、縱向一定間距的網(wǎng)格布局。

?

?

?

方法摘要

int

getColumns()??:獲取此布局中的列數(shù)。

int

getHgap():獲取組件之間的水平間距。

int

getRows()?:獲取此布局中的行數(shù)。

int

getVgap()??:獲取組件之間的垂直間距。

void

removeLayoutComponent(Component?comp)?:從布局移除指定組件。

void

setColumns(int?cols)??:將此布局中的列數(shù)設(shè)置為指定值。

void

setHgap(int?hgap):將組件之間的水平間距設(shè)置為指定值。

void

setRows(int?rows):將此布局中的行數(shù)設(shè)置為指定值。

void

setVgap(int?vgap)?:將組件之間的垂直間距設(shè)置為指定值。

String

toString():返回此網(wǎng)格布局的值的字符串表示形式。

?

實(shí)例一:

//GridLayoutDemo.java

import javax.swing.*;

import java.awt.*;

public class GridLayoutDemo extends JFrame {

? public GridLayoutDemo() {

???? setLayout(new GridLayout(0,2));?????????? //設(shè)置為網(wǎng)格布局,未指定行數(shù)

???? setFont(new Font("Helvetica", Font.PLAIN, 14));

???? getContentPane().add(new JButton("Button 1"));

???? getContentPane().add(new JButton("Button 2"));

???? getContentPane().add(new JButton("Button 3"));

???? getContentPane().add(new JButton("Button 4"));

???? getContentPane().add(new JButton("Button 5"));

? }

? public static void main(String args[]) {

??? GridLayoutDemo f = new GridLayoutDemo();

??? f.setTitle("GridWindow Application");

??? f.pack();

??? f.setVisible(true);

???????? f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

???????? f.setLocationRelativeTo(null);?????????? //讓窗體居中顯示

? }

}

?

程序結(jié)果如下圖所示:

?

?

?

實(shí)例二:布局一個簡單的計(jì)算器

思路:對窗體應(yīng)用邊界布局,在NORTH上放置一個文本框,在CENTER上放置一個面板,面板上放置計(jì)算器的相應(yīng)按鈕

//GridFrame.Java

import java.awt.*;

import javax.swing.*;

class GridFrame extends JFrame{

???????? //定義面板,并設(shè)置為網(wǎng)格布局,44列,組件水平、垂直間距均為3

???????? ?JPanel p=new JPanel(new GridLayout(4,4,3,3));

???????? ?JTextArea t=new JTextArea();??????? //定義文本框

???????? ?//定義字符串?dāng)?shù)組,為按鈕的顯示文本賦值

???????? //注意字符元素的順序與循環(huán)添加按鈕保持一致

???????? ?String str[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};

???? public GridFrame(String s){

?????????????????? super(s);? //為窗體名稱賦值

??????? setLayout(new BorderLayout());???? //定義窗體布局為邊界布局

??????? JButton btn[];???????????????????????????? //聲明按鈕數(shù)組

??????? btn=new JButton[str.length];???? //創(chuàng)建按鈕數(shù)組

?????????????????? //循環(huán)定義按鈕,并添加到面板中

??????? for(int i=0;i<str.length;i++){

?????????????? btn[i]=new JButton(str[i]);

?????????????? p.add(btn[i]);

???????? }

?????????????????? ?//將文本框放置在窗體NORTH位置

???????? ?? getContentPane().add(t,BorderLayout.NORTH);?????

???????? ?? //將面板放置在窗體CENTER位置

???????? ?? getContentPane().add(p,BorderLayout.CENTER);???

???????? ?? setVisible(true);

???????? ?? setSize(250,200);

???????? ?? setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

???????? ?? setLocationRelativeTo(null);?????????????? //讓窗體居中顯示

? ???? ?}

????? public static void main(String[] args){

???????? GridFrame gl=new GridFrame("網(wǎng)格布局計(jì)算機(jī)!");

???????? }

}?

?

程序執(zhí)行結(jié)果如下圖:

?

??????????????????注意:這里一定要體會通過字符串?dāng)?shù)組和循環(huán)添加按鈕的方法,以后添加菜單以及事件處理均采用這種方法,這種方法的好處在于,如果需要修改按鈕順序,直接修改字符串就可以了。而不需要改動添加按鈕的代碼。

總結(jié)

以上是生活随笔為你收集整理的三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。