Java彈簧布局管理器使用方法詳解
由 SpringLayout 類實(shí)現(xiàn)的布局管理器稱為彈簧布局管理器。利用該布局管理器管理組件,當(dāng)改變窗體的大小時(shí),能夠在不改變組件間相對(duì)位置的前提下自動(dòng)調(diào)整組件大小,使組件依舊布滿整個(gè)窗體,從而保證了窗體的整體效果。下面,通過(guò)一個(gè)實(shí)例來(lái)看看彈簧布局管理器的使用方法和效果。
彈簧布局管理器以容器和組件的邊緣為操作對(duì)象,通過(guò)為組件和容器邊緣以及組件和組件邊緣建立約束,實(shí)現(xiàn)對(duì)組件布局的管理。通過(guò)方法 putConstraint(String e1,Conponet c1,int pad,String e2,Componet c2)可以為各邊之間建立約束,該方法的入口參數(shù)說(shuō)明如下:
c1:需要參考的組件對(duì)象;
c2:需要參考的組件對(duì)象的具體需要參考的邊;
e1:被參考的組件對(duì)象;
e2:被參考的組件對(duì)象的具體被參考的邊;
pad:兩條邊之間的距離,即兩個(gè)組件之間的間距。
有點(diǎn)繞,其實(shí)很好理解。
實(shí)例1:使用彈簧布局管理器。
本實(shí)例利用彈簧布局管理器實(shí)現(xiàn)窗體,在調(diào)整窗體的大小后,組件仍會(huì)布滿整個(gè)窗體,并且組件間的相對(duì)位置并不會(huì)改變。源碼:
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.Spring;
import javax.swing.SpringLayout;
public class SpringLayout_3 extends JFrame {
private static final long serialVersionUID = -6045918631932051025L;
public SpringLayout_3() {
// TODO Auto-generated constructor stub
Container container = getContentPane();
SpringLayout springLayout = new SpringLayout();
container.setLayout(springLayout);
JLabel topicLabel = new JLabel("主題 :");
JLabel contentLabel = new JLabel("內(nèi)容 :");
final JTextField textField = new JTextField(30);
JTextArea textArea = new JTextArea(3, 30);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(textArea);
textArea.setLineWrap(true);
final JButton confirmButton = new JButton("取消");
JButton cancelButton = new JButton("確認(rèn)");
Spring st = Spring.constant(10);
Spring st2 = Spring.constant(30);
container.add(topicLabel);
springLayout.putConstraint(SpringLayout.NORTH, topicLabel, st,
SpringLayout.NORTH, container);
springLayout.putConstraint(SpringLayout.WEST, topicLabel, st,
SpringLayout.WEST, container);
container.add(textField);
springLayout.putConstraint(SpringLayout.WEST, textField, st2,
SpringLayout.EAST, topicLabel);
springLayout.putConstraint(SpringLayout.NORTH, textField, 0,
SpringLayout.NORTH, topicLabel);
springLayout.putConstraint(SpringLayout.EAST, textField, Spring.minus(st),
SpringLayout.EAST, container);
container.add(contentLabel);
springLayout.putConstraint(SpringLayout.WEST, contentLabel, 0,
SpringLayout.WEST, topicLabel);
springLayout.putConstraint(SpringLayout.NORTH, contentLabel, st,
SpringLayout.SOUTH, topicLabel);
container.add(scrollPane);
springLayout.putConstraint(SpringLayout.NORTH, scrollPane, 0,
SpringLayout.NORTH, contentLabel);
springLayout.putConstraint(SpringLayout.WEST, scrollPane, 0,
SpringLayout.WEST, textField);
springLayout.putConstraint(SpringLayout.EAST, scrollPane, Spring.minus(st),
SpringLayout.EAST, container);
container.add(confirmButton);
springLayout.putConstraint(SpringLayout.SOUTH, scrollPane, Spring.minus(st),
SpringLayout.NORTH, confirmButton);
springLayout.putConstraint(SpringLayout.EAST, confirmButton, Spring.minus(st),
SpringLayout.EAST, container);
springLayout.putConstraint(SpringLayout.SOUTH, confirmButton, Spring.minus(st),
SpringLayout.SOUTH, container);
container.add(cancelButton);
springLayout.putConstraint(SpringLayout.EAST, cancelButton, Spring.minus(st),
SpringLayout.WEST, confirmButton);
springLayout.putConstraint(SpringLayout.NORTH, cancelButton, 0,
SpringLayout.NORTH, confirmButton);
// make the text field focused every time the window is activated
addWindowFocusListener(new WindowAdapter() {
@Override
public void windowGainedFocus(WindowEvent e) {
// TODO Auto-generated method stub
textField.requestFocus();
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringLayout_3 frame = new SpringLayout_3();
frame.setTitle("使用彈簧布局管理器");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100, 100, 600, 300);
}
}
總結(jié)
以上就是彈簧布局管理器的使用方法及實(shí)例,喜歡的同學(xué)快去試試效果吧。
感謝大家對(duì)腳本之家的支持!
相關(guān)文章
Struts2 文件上傳進(jìn)度條的實(shí)現(xiàn)實(shí)例代碼
本篇文章主要介紹了Struts2 文件上傳進(jìn)度條的實(shí)現(xiàn)實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
springboot實(shí)現(xiàn)注冊(cè)加密與登錄解密功能(demo)
這篇文章主要介紹了springboot實(shí)現(xiàn)注冊(cè)的加密與登錄的解密功能,本文通過(guò)demo實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
Java操作透明圖片并保持背景透明的實(shí)現(xiàn)
這篇文章主要介紹了Java操作透明圖片并保持背景透明的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
httpclient staleConnectionCheckEnabled獲取連接流程解析
這篇文章主要為大家介紹了httpclient staleConnectionCheckEnabled獲取連接流程示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
實(shí)戰(zhàn)指南:Java編寫Flink?SQL解決難題
想知道如何利用Java編寫Flink?SQL解決難題嗎?本指南將為您揭示最實(shí)用的技巧和策略,讓您輕松應(yīng)對(duì)挑戰(zhàn),跟著我們一起探索,讓Java和Flink?SQL成為您問(wèn)題解決的得力助手!2023-12-12
Java基礎(chǔ)強(qiáng)化訓(xùn)練輸入錯(cuò)誤即結(jié)束進(jìn)程
本文主要介紹了Java編程的基礎(chǔ)知識(shí)強(qiáng)化應(yīng)用,文中實(shí)例涉及到了許多基礎(chǔ)知識(shí),new對(duì)象,控制臺(tái)輸入,if語(yǔ)句等。很實(shí)用,需要的朋友可以參考下2017-09-09

