日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java实用教程——组件及事件处理——布局管理(五种)

發(fā)布時間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实用教程——组件及事件处理——布局管理(五种) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.流式布局FlowLayout

public void pack()調(diào)整此窗口的大小,以適合其子組件的首選大小和布局。如果該窗口或其所有者仍不可顯示,則兩者在計算首選大小之前變得可顯示。在計算首選大小之后,將會驗(yàn)證該Window。窗口自動適應(yīng)大小,使窗口能正好顯示里面所有的控件。

import java.awt.*;public class FlowLayoutDemo {public static void main(String[] args) {Frame frame = new Frame("這里測試FlowLayout");//1.通過setLayout方法設(shè)置容器的布局管理器// frame.setLayout(new FlowLayout(FlowLayout.LEFT,20,20));//frame.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));frame.setLayout(new FlowLayout(FlowLayout.RIGHT,40,20));//2.添加多個按鈕到frame中for (int i = 1; i <= 100; i++) {frame.add(new Button("按鈕"+i));}//3.設(shè)置最佳大小,pack方法 大小適中frame.pack();frame.setVisible(true);}}

右對齊:
居中對齊:

左對齊:

2.邊界布局BorderLayout

當(dāng)改變使用 BorderLayout 的容器大小時, NORTH 、 SOUTH 和 CENTER區(qū)域水平調(diào)整,而 EAST 、 WEST 和 CENTER 區(qū)域垂直調(diào)整。使用BorderLayout 有如下兩個注意點(diǎn):

1. 當(dāng)向使用 BorderLayout 布局管理器的容器中添加組件時 , 需要指定要添加到哪個區(qū)域中 。 如果沒有指定添加到哪個區(qū)域中,則默認(rèn)添加到中間區(qū)域中,其他區(qū)域空出的話,也會被中間區(qū)域占用;
2. 如果向同一個區(qū)域中添加多個組件時 , 后放入的組件會覆蓋先放入的組件

3.網(wǎng)格布局GridLayout

import javax.swing.JFrame; import java.awt.*; import javax.swing.*;public class GridLayoutDemo extends JFrame{public static void main(String []args){GridLayoutDemo win = new GridLayoutDemo();}public GridLayoutDemo(){//1.創(chuàng)建對象,并且標(biāo)題設(shè)置為計算器this.setTitle("這是一個計算器的界面");this.setBounds(100,200,500,500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);init();}public void init(){//2.創(chuàng)建一個Panel對象,并且往Panel中放置一個TextField組件JPanel p1 = new JPanel();p1.add(new JTextField(30));//3.把上述的Panel放入到窗口的北側(cè)區(qū)域this.add(p1,BorderLayout.NORTH);//4.創(chuàng)建一個Panel對象,并且設(shè)置其布局管理器為GridLayoutJPanel p2 = new JPanel();p2.setLayout(new GridLayout(3,5,4,4));//5.往上述Panel中,放置15個按鈕,內(nèi)容依次是:0,1,2,3,4,5,6,7,8,9,+,-,*,/,.for (int i = 0; i < 10; i++) {p2.add(new Button(i+""));}p2.add(new Button("+"));p2.add(new Button("-"));p2.add(new Button("*"));p2.add(new Button("/"));p2.add(new Button("."));//6.把上述Panel添加到Frame的中間區(qū)域中國this.add(p2);//7.設(shè)置Frame為最佳大小this.pack();//8.設(shè)置Frame可見this.setVisible(true);}}


4.卡片布局CardLayout


import javax.swing.*; import java.awt.*; import javax.swing.event.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CardLayoutDemo extends JFrame{public static void main(String []args){CardLayoutDemo win = new CardLayoutDemo();}public CardLayoutDemo(){init();this.setTitle("卡片布局");this.setBounds(100,200,500,500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public void init(){//2.創(chuàng)建一個String數(shù)組,存儲不同卡片的名字String []str={"第一張","第二張","第三張","第四張","第五張"};//3.創(chuàng)建一個Panel容器p1,并設(shè)置其布局管理器為CardLayout,用來存放多張卡片JPanel panel1 = new JPanel();CardLayout cardLayout =new CardLayout();panel1.setLayout(cardLayout);//4.往p1中存儲5個Button按鈕,名字從String數(shù)組中取for(int i=0;i<str.length;i++){panel1.add(str[i],new JButton(str[i]));}//5.創(chuàng)建一個Panel容器p2,用來存儲5個按鈕,完成卡片的切換JPanel panel2 = new JPanel();//6.創(chuàng)建5個按鈕,并給按鈕設(shè)置監(jiān)聽器ActionListener listener = new ActionListener()//8.把p1添加到frame的中間區(qū)域{@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO 自動生成的方法存根String Command = arg0.getActionCommand();switch(Command){case "上一張":cardLayout.previous(panel1);break;case "下一張":cardLayout.next(panel1);break;case "第一張":cardLayout.first(panel1);break;case "最后一張":cardLayout.last(panel1);break;case "第三張":cardLayout.show(panel1,"第三張");break;}}};Button b1 = new Button("上一張");Button b2 = new Button("下一張");Button b3 = new Button("第一張");Button b4 = new Button("最后一張");Button b5 = new Button("第三張");b1.addActionListener(listener);b2.addActionListener(listener);b3.addActionListener(listener);b4.addActionListener(listener);b5.addActionListener(listener);//7.把5個按鈕添加到p2中panel2.add(b1);panel2.add(b2);panel2.add(b3);panel2.add(b4);panel2.add(b5);//8.把p1添加到frame的中間區(qū)域this.add(panel1);//9.把p2添加到frame的底部區(qū)域this.add(panel2,BorderLayout.SOUTH); } }

5.BoxLayout盒式布局

import javax.swing.JFrame; import javax.swing.*; import java.awt.*;public class BoxLayoutDemo extends JFrame{public static void main(String []args){BoxLayoutDemo boxLayout = new BoxLayoutDemo();}public BoxLayoutDemo(){init();this.setTitle("BoxLayout盒式容器");this.setBounds(200,200,500,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public void init(){JPanel panel = new JPanel();panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));//panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));JButton button1 = new JButton("按鈕1");JButton button2 = new JButton("按鈕2");panel.add(button1);panel.add(button2);this.pack();this.add(panel);} }




import javax.swing.Box; import javax.swing.*; import java.awt.*;public class box extends JFrame{public static void main(String []args){box boxlayout = new box();}public box(){init();//1.創(chuàng)建Frame對象this.setTitle("這里測試BoxLayout");this.setBounds(200,200,500,300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}public void init(){//2.創(chuàng)建一個橫向的Box,并添加兩個按鈕Box hBox = Box.createHorizontalBox();hBox.add(new JButton("水平按鈕一"));hBox.add(Box.createHorizontalGlue());//兩個方向都可以拉伸的間隔hBox.add(new JButton("水平按鈕二"));hBox.add(Box.createHorizontalStrut(10));//水平間隔固定,垂直間方向可以拉伸hBox.add(new JButton("水平按鈕3"));//3.創(chuàng)建一個縱向的Box,并添加兩個按鈕Box vBox = Box.createVerticalBox();vBox.add(new JButton("垂直按鈕一"));vBox.add(Box.createVerticalGlue());//兩個方向都可以拉伸的間隔vBox.add(new JButton("垂直按鈕二"));vBox.add(Box.createVerticalStrut(10));//垂直間隔固定,水平方向可以拉伸vBox.add(new JButton("垂直按鈕三"));//4.把box容器添加到frame容器中this.add(hBox, BorderLayout.NORTH);this.add(vBox);//5.設(shè)置frame最佳大小并可見}}

總結(jié)

以上是生活随笔為你收集整理的java实用教程——组件及事件处理——布局管理(五种)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。