Java Swing組件布局管理器之FlowLayout(流式布局)入門教程
本文實例講述了Java Swing組件布局管理器之FlowLayout(流式布局)。分享給大家供大家參考,具體如下:
FlowLayout應該是Swing布局管理器學習中最簡單、最基礎的一個。所謂流式,就是內部控件像水流一樣,從前到后按順序水平排列,直到達到容器的寬度時跳轉到第二行。既然是水平排列,那么就存在三種基本的對齊方式:居中對齊(CENTER )、左對齊(LEFT )和右對齊(RIGHT )。然而,F(xiàn)lowLayout還提供兩種對齊方式:LEADING,表示控件與容器方向開始邊對應;TRAILING,控件與容器方向結束邊對應。setAlignment(int align)用于設置對齊方式。在一般情況下,LEADING就是左對齊,TRAILING就是右對齊。除此之外,F(xiàn)lowLayout還可以對內部控件之間、內部控件與容器之間的間距進行設置,setHgap(int hgap)用于指定水平間距;setVgap(int vgap)用于指定垂直間距。
FlowLayout常用方法如下:
|
構造函數(shù) |
||
|
名稱 |
用途 |
|
|
FlowLayout() |
構造一個新的 FlowLayout,它是默認居中對齊的,默認的水平和垂直間隙是5個像素 |
|
|
FlowLayout(int align) |
構造一個新的 FlowLayout,它具有指定的對齊方式,默認的水平和垂直間隙是 5 個像素 五個參數(shù)值及含義如下: 0或FlowLayout.lEFT ,控件左對齊 1或FlowLayout.CENTER ,居中對齊 2或FlowLayout.RIGHT ,右對齊 3或FlowLayout.LEADING,控件與容器方向開始邊對應 4或FlowLayout.TRAILING,控件與容器方向結束邊對應 如果是0、1、2、3、4之外的整數(shù),則為左對齊 |
|
|
FlowLayout(int align, int hgap, int vgap) |
創(chuàng)建一個新的流布局管理器,它具有指定的對齊方式以及指定的水平和垂直間隙。 |
|
|
基本方法 |
|
|
名稱 |
用途 |
|
Void setAlignment(int align) |
設置此布局的對齊方式。 |
|
void setHgap(int hgap) |
設置組件之間以及組件與 Container 的邊之間的水平間隙。 |
|
void setVgap(int vgap) |
設置組件之間以及組件與 Container 的邊之間的垂直間隙。 |
測試用例如下:
package awtDemo;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/*
* @功能:演示FlowLayout布局管理器的用法
* @版本:20150609
*/
@SuppressWarnings("serial")
public class FlowLayoutDemo extends JFrame {
FlowLayout contentPanelLayout = new FlowLayout();
Map<String, Integer> alignmentMap = new HashMap<String, Integer>();
JPanel configPanel = new JPanel();
JPanel contentPanel = new JPanel();
JComboBox<String> alignmentComboBox = new JComboBox<String> ();
JTextField textHgap = new JTextField("10");
JTextField textVgap = new JTextField("20");
MyListener myListener = new MyListener();
public FlowLayoutDemo() {
//init
alignmentMap.put("LEFT", 0);
alignmentMap.put("CENTER", 1);
alignmentMap.put("RIGHT", 2);
alignmentMap.put("LEADING", 3);
alignmentMap.put("TRAILING", 4);
//設置面板
configPanel.setLayout(new FlowLayout());
configPanel.add(new JLabel("對齊方式"));
for (String alignment : alignmentMap.keySet()) {
alignmentComboBox.addItem(alignment);
}
configPanel.add(alignmentComboBox);
configPanel.add(new JLabel("水平間距"));
configPanel.add(textHgap);
configPanel.add(new JLabel("垂直間距"));
configPanel.add(textVgap);
JButton actionBtn = new JButton("Action!!!");
actionBtn.addActionListener(myListener);
configPanel.add(actionBtn);
//展示面板
contentPanel.setLayout(contentPanelLayout);
contentPanel.add(new JButton("Button 1"));
contentPanel.add(new JButton("Button 2"));
contentPanel.add(new JButton("Button 3"));
contentPanel.add(new JButton("Button 4"));
//主窗體
setLayout(new BorderLayout());
add("North",configPanel);
add("South", contentPanel);
}
class MyListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String alignmentStr = alignmentComboBox.getSelectedItem().toString();
int alignment = alignmentMap.get(alignmentStr);
contentPanelLayout.setAlignment(alignment);
int hgap = Integer.valueOf(textHgap.getText());
int vgap = Integer.valueOf(textVgap.getText());
contentPanelLayout.setHgap(hgap);
contentPanelLayout.setVgap(vgap);
contentPanel.updateUI();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
FlowLayoutDemo window = new FlowLayoutDemo();
window.setTitle("FlowLayoutDemo - m.fzitv.net");
// 該代碼依據放置的組件設定窗口的大小使之正好能容納你放置的所有組件
window.setPreferredSize(new Dimension(500, 200));
window.pack();
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLocationRelativeTo(null); // 讓窗體居中顯示
}
}
運行效果如下:

更多關于java相關內容感興趣的讀者可查看本站專題:《Java數(shù)據結構與算法教程》、《Java字符與字符串操作技巧總結》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
logback StatusListener的定義方法源碼解讀
這篇文章主要為大家介紹了logback StatusListener的定義方法源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11
java中實現(xiàn)map與對象相互轉換的幾種實現(xiàn)
這篇文章主要介紹了java中實現(xiàn)map與對象相互轉換的幾種實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
淺談Spring Cloud zuul http請求轉發(fā)原理
這篇文章主要介紹了淺談Spring Cloud zuul http請求轉發(fā)原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08

