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
- Java圖形化:JComponent元件Java元件
- Java圖形化:Swing表格的使用Java
- iOS 常用佈局方式之ConstraintiOSAI
- css佈局-實現左中右佈局的5種方式CSS
- 移動 WEB 開發的佈局方式 ---- 響應式佈局Web
- 圖文詳解Java物件記憶體佈局Java物件記憶體
- 使用Git建立本地倉庫(命令列方式&圖形化介面方式)Git命令列
- Web網頁佈局的主要方式Web網頁
- kivy八種佈局方式學習
- Android 佈局優化Android優化
- CSS 來佈局圖片CSS
- 安卓程式碼、圖片和佈局最佳化安卓
- Python全棧Web(定位佈局、定位方式)Python全棧Web
- HTML 語義化佈局HTML
- iOS Flexbox 佈局優化iOSFlex優化
- UIbutton 上下圖片文字佈局UI
- Java物件記憶體佈局Java物件記憶體
- HarmonyOS Java UI之DirectionalLayout佈局JavaUI
- Java的圖形列印Java
- java:繪製圖形Java
- 三欄佈局 五中解決方式
- flex 方式的佈局你用對了嗎?Flex
- 前端佈局方式彙總及概念淺析前端
- 模仿微信適配 iPad 的佈局方式iPad
- css佈局-float佈局CSS
- CSS佈局 --- 居中佈局CSS
- HTML 語義化佈局概述HTML
- Android效能優——佈局優化Android優化
- Android中佈局的優化Android優化
- Android效能優化之佈局優化Android優化
- Android 優化之路(一)佈局優化Android優化
- 圖解CSS3-flex佈局圖解CSSS3Flex
- java的圖形化介面 文字區JTextArea的程式例子Java
- Java物件的記憶體佈局Java物件記憶體
- 三欄式佈局的幾種實現方式
- 水平垂直居中佈局的多種實現方式