當前位置:首頁 » 編程語言 » java的swing布局

java的swing布局

發布時間: 2023-07-23 11:00:35

A. java swing布局

null layout不是很好,所有的東西都要自己定義,一旦窗口大小變化就要重新計算。我建議使用MigLayout。上手慢,但很強大。http://www.miglayout.com

而且,就算你要用內建的Layout Manager,還有一個GridBag Layout,比Grid Layout更強大一點。

接下來,那個邊框,不是JSeparator, 而是一個邊框。我猜是

Border result = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "修改信息: ");

如果是我,使用MigLayout,以上代碼還是比較簡單的:

importjava.awt.event.KeyEvent;

importjavax.swing.BorderFactory;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.SwingUtilities;
importjavax.swing.border.Border;
importjavax.swing.border.EtchedBorder;

importnet.miginfocom.swing.MigLayout;

{
publicMyFrame(){
begin();
}

privatevoidbegin(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(newMigLayout("insets10,fill","[]","[]5[]"));

//firstpanel
JPanelfirst=newJPanel();

//first這個panel有5像素的邊緣,2列,3行。第一列右對齊,佔40%寬度;第二列默認,左對齊,占據剩餘所有空間。
first.setLayout(newMigLayout("insets5,fill","[right,40%]5[fill,grow]","[]5[]5[]"));
first.setOpaque(false);
//這個面板的border有些特殊:createTitledBorder()方法的簽名可以有兩個:前一個是線的類型,後面一個是標題文本。
Borderresult=BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED),"修改信息:");
first.setBorder(result);
//把first加到contentPane裡面
add(first,"cell00,grow");

JLabeloriginal=newJLabel("輸入原密碼:");
JLabelnewPass=newJLabel("輸入新密碼:");
JLabelconfirm=newJLabel("確認新密碼:");

JTextFieldorig_field=newJTextField();
JTextFieldnew_field=newJTextField();
JTextFieldconfirm_field=newJTextField();

//miglayout的核心就是網格排布。用坐標來定義添加元素的位置
first.add(original,"cell00,w100!");//addtocol0,line0,min:pref:maxwidthallsetto100
first.add(newPass,"cell01,w100!");//addtocol0,line1
first.add(confirm,"cell02,w100!");//addtocol0,line2

first.add(orig_field,"cell10,w150!");//addtocol1,line0,min:pref:maxwidthallsetto150
first.add(new_field,"cell11,w150!");//addtocol1,line1
first.add(confirm_field,"cell12,w150!");//addtocol1,line2

//按鈕面板
JPanelbuttons=newJPanel();
buttons.setOpaque(false);
//邊緣為5像素;有兩列,中間是10像素的間距,列內元素居中;有一行,行中上下對齊也是居中
buttons.setLayout(newMigLayout("insets5,fill","[center]10[center]","[center]"));
JButtonyes=newJButton("Y.確定");
//快捷鍵設為虛擬鍵Y,得到下劃線效果
yes.setMnemonic(KeyEvent.VK_Y);

JButtonquit=newJButton("Q.退出");
//快捷鍵設為虛擬鍵Q,得到下劃線效果
quit.setMnemonic(KeyEvent.VK_Q);

//把yes按鈕加到第一列第一行,min:pref:max的大小都設為100像素
buttons.add(yes,"cell00,w100!");
//把quit按鈕加到第二列第一行,min:pref:max的大小都設為100像素
buttons.add(quit,"cell10,w100!");

//把按鈕面板加到contentPane裡面
add(buttons,"cell01,grow");
pack();
setBounds(0,0,500,400);
setLocationRelativeTo(null);
setVisible(true);
}
publicstaticvoidmain(String[]args){
SwingUtilities.invokeLater(newRunnable(){

@Override
publicvoidrun(){
MyFrameframe=newMyFrame();

}

});
}
}

效果是這樣:


B. java怎麼做swing界面

swing做界面,一般需要一種基本知識:

一:關於布局的知識,常用的布局要熟悉,比如邊界布局,流式布局,絕對布局,網格布局等. 布局決定了組件(按鈕,文本框,下拉框等)所在的位置

二:關於事件響應機制,比如點擊按鈕事件,如何響應.

三:一些常用的組件,按鈕, 文本框, 下拉框,復選按鈕, 單選按鈕, 等

舉例: 簡單的代碼,實現給窗口隨機更換背景色

importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;

{

publicDemoFrame(){
JButtonjb1=newJButton("點擊換背景色");//定義按鈕組件
jb1.addActionListener(this);//給按鈕添加事件響應機制,按鈕點擊時執行actionPerformed方法
add(jb1);//把組件添加到窗口
setLayout(newFlowLayout());//流式布局
setTitle("Color");//窗口標題
setSize(300,200);//大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//點擊關閉時退出系統
setVisible(true);//窗口可見
}
publicstaticvoidmain(String[]args){//main方法,啟動窗口
newDemoFrame();//創建窗口
}

publicvoidactionPerformed(ActionEvente){//當按鈕被點擊時,執行下面的代碼
//隨機顏色,並設置成為窗口的背景色
getContentPane().setBackground(newColor((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
}
}

熱點內容
java中set集合 發布:2025-02-07 22:43:34 瀏覽:30
播放這個wifi密碼是多少 發布:2025-02-07 22:34:54 瀏覽:99
視頻存儲時間長了有雪花 發布:2025-02-07 22:24:34 瀏覽:568
哈佛f7x怎麼區分配置 發布:2025-02-07 22:22:34 瀏覽:771
廣州python培訓 發布:2025-02-07 22:22:26 瀏覽:199
陸金所的交易密碼是什麼 發布:2025-02-07 22:19:25 瀏覽:320
如何刪除平板儲存密碼 發布:2025-02-07 22:10:29 瀏覽:747
php微信授權登錄 發布:2025-02-07 22:10:27 瀏覽:378
怎樣編程時鍾 發布:2025-02-07 21:59:38 瀏覽:562
誇克編程 發布:2025-02-07 21:43:43 瀏覽:530