Java圖形化:佈局方式
佈局方式
-
FlowLayout
:流佈局 -
BorderLayout
:邊框佈局 -
GridLayout
:網格佈局
FlowLayout(流佈局)
像Word打字,元件從左向右排列,一列排滿後自動換下一行。元件預設居中對齊,可以設定左/右對齊。
流佈局會維持元件的原始大小。
流佈局是JPanel(皮膚)的預設佈局。
容器可以使用setLayout()
方法改變佈局。
示例程式碼:
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class TestLowLayout {
public static void main(String[] args) {
JFrame jf = new JFrame("流佈局Demo");
FlowLayout fl = new FlowLayout();
jf.setLayout(fl);
JButton jb1 = new JButton("按鈕1");
JButton jb2 = new JButton("按鈕2");
jf.add(jb1);
jf.add(jb2);
jf.setSize(600, 300);
jf.setLocation(300, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
}
圖示:
BorderLayout(邊框佈局)
邊框佈局把整個視窗分成了5個部分:
- 上北
- 下南
- 左西
- 右東
- 中
其中,北和南是整行,但是中、西、東都不是整列。一般只會出現2個或3個部分。元件放入時需要指定放在哪個區域,預設在中部。每個部分只能存放一個元件,如果存放多個就會覆蓋前面的。如果想存放多個必須藉助皮膚(Panel)。元件在邊框佈局中不保持原始大小,會充滿整個區域,JFrame的預設佈局就是邊框佈局。如果某個部分不出現,這個區域會被出現的部分擠佔。
示例程式碼:
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class TestBorderLayout {
public static void main(String[] args) {
JFrame jf = new JFrame("BorderLayout視窗");
JButton jb = new JButton("中");
JButton jb1 = new JButton("北");
JButton jb2 = new JButton("南");
JButton jb3 = new JButton("西");
JButton jb4 = new JButton("東");
jf.add(jb);
jf.add(jb1,BorderLayout.NORTH);
jf.add(jb2,BorderLayout.SOUTH);
jf.add(jb3,BorderLayout.WEST);
jf.add(jb4,BorderLayout.EAST);
jf.setSize(600, 300);
jf.setLocation(600, 600);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
}
圖示:
GridLayout(網格佈局)
把視窗分成幾行幾列的表格方式,構造時需要指定行數和列數。元件在網狀佈局中不保持原始大小,會充滿整個區域。元件在網狀佈局中,一個格子只存放一個元件,自動向後走。
示例程式碼:
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class TestGridLayout {
public static void main(String[] args) {
JFrame jf = new JFrame("網格佈局Test");
GridLayout gl = new GridLayout(5,4);
jf.setLayout(gl);
for (int i=0; i < 20; i++) {
JButton jb = new JButton("按鈕 "+i);
jf.add(jb);
}
// 自動調整大小
jf.pack();
jf.setLocation(300, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
}
圖示:
應用1:計算器
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ComputerTest {
public static void main(String[] args) {
JFrame jf = new JFrame("計算器");
JTextField jtf = new JTextField("0",20);
jf.add(jtf,BorderLayout.NORTH);
String[] lab = {"CE","C","+/-","BackS","7","8","9","+","4","5","6","-","1","2","3","*","0",".","=","/"};
JPanel jp = new JPanel();
GridLayout gl = new GridLayout(5,4);
jp.setLayout(gl);
for (int i=0; i<lab.length; i++) {
JButton jb = new JButton(lab[i]);
jp.add(jb);
}
jf.add(jp);
// 自動調節視窗大小
jf.pack();
// 禁止改變視窗大小
jf.setResizable(false);
jf.setLocation(300, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
}
圖示:
相關文章
- 網頁佈局------幾種佈局方式網頁
- java:佈局方法(流佈局)Java
- CSS 常見佈局方式CSS
- 細談CSS佈局方式CSS
- Java圖形化:JComponent元件Java元件
- CSS多種佈局方式自我實現-水平佈局(二)CSS
- 佈局優化優化
- 如何優化店鋪模板佈局——資訊圖優化
- 移動 WEB 開發的佈局方式 ---- 響應式佈局Web
- css佈局-實現左中右佈局的5種方式CSS
- 圖文詳解Java物件記憶體佈局Java物件記憶體
- 安卓程式碼、圖片和佈局最佳化安卓
- Web網頁佈局的主要方式Web網頁
- kivy八種佈局方式學習
- 使用Git建立本地倉庫(命令列方式&圖形化介面方式)Git命令列
- Java圖形化:Swing表格的使用Java
- CSS 來佈局圖片CSS
- Android 佈局優化Android優化
- HTML 語義化佈局HTML
- iOS 常用佈局方式之ConstraintiOSAI
- CSS+DIV佈局三種定位方式CSS
- web前端佈局篇(切圖)Web前端
- Java物件記憶體佈局Java物件記憶體
- HarmonyOS Java UI之DirectionalLayout佈局JavaUI
- CSS佈局 --- 居中佈局CSS
- css佈局-float佈局CSS
- HTML 語義化佈局概述HTML
- Android佈局優化技巧Android優化
- 前端佈局方式彙總及概念淺析前端
- 三欄佈局 五中解決方式
- flex 方式的佈局你用對了嗎?Flex
- 模仿微信適配 iPad 的佈局方式iPad
- Python全棧Web(定位佈局、定位方式)Python全棧Web
- Android優化之佈局優化Android優化
- 電信網路拓撲圖自動佈局之曲線佈局
- 安卓程式碼、圖片、佈局、網路和電量優化安卓優化
- 圖解CSS3-flex佈局圖解CSSS3Flex
- UIbutton 上下圖片文字佈局UI