java布局_運用 BoxLayout 進行 Swing 控件布局

引言

在用戶使用 Java Swing 進行用戶界面開發過程中,會碰到如何對 Java Swing 的控件進行布局的問題。Swing 的控件放置在容器 (Container) 中,容器就是能夠容納控件或者其它容器的類,容器的具體例子有 Frame、Panel 等等。容器需要定義一個布局管理器來對控件進行布局管理,Swing 當中提供的主要的布局管理器有 FlowLayout、BorderLayout、BoxLayout、GridLayout 和 GridBaglayout, 它們的主要特點如表 1 所示:

表 1. Swing 中的一些主要布局管理器的比較

布局管理器

特點FlowLayout

把控件按照順序一個接一個由左向右的水平放置在容器中,一行放不下,就放到下一行

BorderLayout

將整個容器劃分成東南西北中五個方位來放置控件,放置控件時需要指定控件放置的方位

BoxLayout

可以指定在容器中是否對控件進行水平或者垂直放置,比 FlowLayout 要更為靈活

GridLayout

將整個容器劃分成一定的行和一定的列,可以指定控件放在某行某列上

GridBagLayout

是 Swing 當中最靈活也是最復雜的布局管理器,可對控件在容器中的位置進行比較靈活的調整

本文主要關注在 BoxLayout 布局管理器的使用上。我們首先對 BoxLayout 作一下介紹。

BoxLayout 介紹

如前所述,BoxLayout 可以把控件依次進行水平或者垂直排列布局,這是通過參數 X_AXIS、Y_AXIS 來決定的。X_AXIS 表示水平排列,而 Y_AXIS 表示垂直排列。BoxLayout 的構造函數有兩個參數,一個參數定義使用該 BoxLayout 的容器,另一個參數是指定 BoxLayout 是采用水平還是垂直排列。下面是一個創建 BoxLayout 實例的例子:

JPanel panel=new JPanel();

BoxLayout layout=new BoxLayout(panel, BoxLayout.X_AXIS);

panel.setLayout(layoout);Show moreShow more icon

在這個例子中,一個 BoxLayout 布局管理器的實例 layout 被創建,這個實例被設置為 panel 的布局管理器,該布局管理器采用了水平排列來排列控件。

當 BoxLayout 進行布局時,它將所有控件依次按照控件的優先尺寸按照順序的進行水平或者垂直放置,假如布局的整個水平或者垂直空間的尺寸不能放下所有控件,那么 BoxLayout 會試圖調整各個控件的大小來填充整個布局的水平或者垂直空間。

BoxLayout 往往和 Box 這個容器結合在一起使用,這么做的理由是,BoxLayout 是把控件以水平或者垂直的方向一個接一個的放置,如果要調整這些控件之間的空間,就會需要使用 Box 容器提供的透明的組件作為填充來填充控件之間的空間,從而達到調整控件之間的間隔空間的目的。Box 容器提供了 4 種透明的組件,分別是 rigid area、strut、glue、filler。Box 容器分別提供了不同的方法來創建這些組件。這四個組件的特點如下:

Rigid area 是一種用戶可以定義水平和垂直尺寸的透明組件;

strut 與 rigid area 類似,但是用戶只能定義一個方向的尺寸,即水平方向或者垂直方向,不能同時定義水平和垂直尺寸;

當用戶將 glue 放在兩個控件之間時,它會盡可能的占據兩個控件之間的多余空間,從而將兩個控件擠到兩邊;

Filler 是 Box 的內部類,它與 rigid area 相似,都可以指定水平或者垂直的尺寸,但是它可以設置最小,最大和優先尺寸。

用 BoxLayout 進行布局

在了解了 BoxLayout 和 Box 容器的基本特點后,我們來看一下 BoxLayout 的優點,首先 BoxLayout 可以進行對控件進行垂直或者水平布局,同時 BoxLayout 使用起來較為簡單,然而把它和 Box 容器相結合,就可以進行較為復雜的布局,達到同使用 GridBagLayout 的一樣的效果,但是使用起來要簡單方便多了。我們用按鈕的布局作為例子來看怎樣運用 BoxLayout 和 Box 容器進行布局:

圖 1. 應用 BoxLayout 進行按鈕布局例子 1

image003.jpg

我們在布局中經常會碰到如圖 1 所示要把按鈕放在容器的兩端,那么我們就可以給容器定義一個 BoxLayout 來布局按鈕,我們在按鈕 1 和按鈕 2 之間放置一個不可見的 glue,如前面所提到的那樣,glue 就會盡量擠占掉兩個按鈕之間的空間,從而將兩個按鈕放在兩端。

圖 2. 應用 BoxLayout 進行按鈕布局例子 2

82c12f2f349468b11db76b585b91d737.png

再來看圖 2 的例子,我們經常會遇到要將兩個按鈕放在容器的右邊,我們就可以給容器定義一個 BoxLayout, 先放一個不可見的 glue,這個 glue 會擠占左邊的空間,從而將兩個按鈕推到右邊,

在兩個按鈕之間再放一個 strut,它也是不可見的,它會把兩個按鈕分隔開。

BoxLayout 布局實例

在基于前面討論的基礎上,我們現在來看一個具體的運用例子,假設圖 3 是我們需要完成的用戶界面:

圖 3. BoxLayout 演示

8cbcd33746f7132f7cafdfed685f708f.png

這個演示是一個虛擬的用戶對話框,只用于演示如何使用 BoxLayout, 例子代碼中沒有實現控件的動作。我們假定通過它用戶可以選擇要查詢的運動會項目,然后查詢,對話框中的表格顯示了查詢到的運動會項目的報名情況。為了完成這個布局,我們從上到下分別定義了 3 個 Panel, 分別叫做 topPanel,middlePanel,bottomPanel,這 3 個 Panel 都使用 BoxLayout。我們先看最上邊的 topPanel,也就是包含表格的 Panel,topPanel 布局的基本思路是該 Panel 采用 BoxLayout 的垂直排列布局,先放置一個不可見的 Strut, 使 topPanel 相 對頂部留出一定的空間, 再放置包含表格的滾動窗格, 再加入一個不可見的 Strut ,從而使 topPanel 和 middlePanel 之間留出一定的空間。 TopPanel 的代碼如清單 1 所示:

清單 1. topPanel 示例代碼清單

static void createTopPanel() {

topPanel = new JPanel();

String[] columnName = { "姓名", "性別", "單位", "參加項目", "備注" };

String[][] rowData = { { "張三", "男", "計算機系", "100 米 ,200 米", "" },

{ "李四", "男", "化學系", "100 米,鉛球", "" },

};

// 創建表格

JTable table = new JTable(new DefaultTableModel(rowData, columnName));

// 創建包含表格的滾動窗格

JScrollPane scrollPane = new JScrollPane(table);

scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

// 定義 topPanel 的布局為 BoxLayout,BoxLayout 為垂直排列

topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.Y_AXIS));

// 先加入一個不可見的 Strut,從而使 topPanel 對頂部留出一定的空間

topPanel.add(Box.createVerticalStrut(10));

// 加入包含表格的滾動窗格

topPanel.add(scrollPane);

// 再加入一個不可見的 Strut,從而使 topPanel 和 middlePanel 之間留出一定的空間

topPanel.add(Box.createVerticalStrut(10));

}Show moreShow more icon

位于中間的 middlePanel 比較復雜些,它的左邊包括標簽運動會項目和運動會項目列表,中間是兩個按鈕,我們假定點擊 >> 按鈕將會把用戶在運動會項目列表中選中的項目移到右邊的查詢項目列表,點擊 << 按鈕則將右邊查詢項目列表中選中的項目移回到左邊的運動會項目列表。它的布局的基本思路是定義了三個子 Panel,這三個子 Panel 分別對應最左邊的標簽和運動會項目列表,中間的兩個按鈕,和最右邊的標簽和查詢項目列表,最左邊的 Panel 采用 BoxLayout 的水平排列布局,中間的 Panel 采用 BoxLayout 的垂直排列布局,兩個按鈕之間加入一個不可見的 rigidArea,調整兩個按鈕之間的垂直距離,最右邊的 Panel 采用 BoxLayout 的水平排列布局放置標簽和查詢項目列表。然后采用水平排列布局的 middlePanel 將三個 Panel 依次水平的加入。 MiddlePanel 的代碼如清單 2 所示。

清單 2. middlePanel 示例代碼清單

static void createMiddlePanel() {

// 創建 middlePanel

middlePanel = new JPanel();

// 采用水平布局

middlePanel .setLayout(new BoxLayout(middlePanel,BoxLayout.X_AXIS ));

// 創建標簽運動會項目

JLabel sourceLabel = new JLabel("運動會項目:");

sourceLabel.setAlignmentY(Component.TOP_ALIGNMENT );

sourceLabel.setBorder(BorderFactory.createEmptyBorder (4, 5, 0, 5));

// 創建列表運動會項目

DefaultListModel listModel = new DefaultListModel();

listModel.addElement("100 米");

listModel.addElement("200 米");

listModel.addElement("400 米");

listModel.addElement("跳遠");

listModel.addElement("跳高");

listModel.addElement("鉛球");

JList sourceList = new JList(listModel);

sourceList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );

sourceList.setVisibleRowCount(5);

JScrollPane sourceListScroller = new JScrollPane(sourceList);

sourceListScroller.setPreferredSize(new Dimension(120, 80));

sourceListScroller

.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );

sourceListScroller.setAlignmentY(Component.TOP_ALIGNMENT );

// 創建最左邊的 Panel

JPanel sourceListPanel = new JPanel();

// 最左邊的 Panel 采用水平布局

sourceListPanel.setLayout(new BoxLayout(sourceListPanel,

BoxLayout.X_AXIS ));

// 加入標簽到最左邊的 Panel

sourceListPanel.add(sourceLabel);

// 加入列表運動會項目到最左邊的 Panel

sourceListPanel.add(sourceListScroller);

sourceListPanel.setAlignmentY(Component.TOP_ALIGNMENT );

sourceListPanel.setBorder(BorderFactory.createEmptyBorder (0, 0, 0, 30));

// 將最左邊的 Panel 加入到 middlePanel

middlePanel .add(sourceListPanel);

// 定義中間的兩個按鈕

JButton toTargetButton = new JButton(">>");

JButton toSourceButton = new JButton("<

// 定義中間的 Panel

JPanel buttonPanel = new JPanel();

// 中間的 Panel 采用水平布局

buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.Y_AXIS ));

// 將按鈕 >> 加入到中間的 Panel

buttonPanel.add(toTargetButton);

//兩個按鈕之間加入一個不可見的 rigidArea

buttonPanel.add(Box.createRigidArea (new Dimension(15, 15)));

// 將按鈕 << 加入到中間的 Panel

buttonPanel.add(toSourceButton);

buttonPanel.setAlignmentY(Component.TOP_ALIGNMENT );

buttonPanel.setBorder(BorderFactory.createEmptyBorder (15, 5, 15, 5));

// 將中間的 Panel 加入到 middlePanel

middlePanel .add(buttonPanel);

// 創建標簽查詢項目

JLabel targetLabel = new JLabel("查詢項目:");

targetLabel.setAlignmentY(Component.TOP_ALIGNMENT );

targetLabel.setBorder(BorderFactory.createEmptyBorder (4, 5, 0, 5));

// 創建列表查詢項目

DefaultListModel targetListModel = new DefaultListModel();

targetListModel.addElement("100 米");

JList targetList = new JList(targetListModel);

targetList

.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );

targetList.setVisibleRowCount(5);

JScrollPane targetListScroller = new JScrollPane(targetList);

targetListScroller.setPreferredSize(new Dimension(120, 80));

targetListScroller

.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );

targetListScroller.setAlignmentY(Component.TOP_ALIGNMENT );

// 創建最右邊的 Panel

JPanel targetListPanel = new JPanel();

// 設置最右邊的 Panel 為水平布局

targetListPanel.setLayout(new BoxLayout(targetListPanel,

BoxLayout.X_AXIS ));

// 將標簽查詢項目加到最右邊的 Panel

targetListPanel.add(targetLabel);

// 將列表查詢項目加到最右邊的 Panel

targetListPanel.add(targetListScroller);

targetListPanel.setAlignmentY(Component.TOP_ALIGNMENT );

targetListPanel.setBorder(BorderFactory.createEmptyBorder (0, 30, 0, 0));

// 最后將最右邊的 Panel 加入到 middlePanel

middlePanel .add(targetListPanel);

}Show moreShow more icon

我們最后來看一下 bottomPanel 如何布局,bottomPanel 包括分布在兩邊的兩個按鈕,其實 bottomPanel 的布局和章節用 BoxLayout 進行布局中的圖 1 是一致的,我們在兩個按鈕之間加入一個 glue, 這個 glue 會擠占兩個按鈕之間的空間,從而將兩個按鈕布局到兩邊,在 bottemPanel 中用一個 buttonPanel 來放置這兩個按鈕。BottomPanel 采用 BoxLayout, 首先放入一個 strut, 從而使 bottomPanel 和 middlePanel 之間留出距離,再放入 buttonPanel,再放入一個 strut, 從而使 bottomPanel 和底部之間留出距離,BottomPanel 的代碼如清單 3 所示。

清單 3. bottomPanel 示例代碼清單

static void createBottomPanel() {

// 創建查詢按鈕

JButton actionButton = new JButton("查詢");

// 創建退出按鈕

JButton closeButton = new JButton("退出");

// 創建 bottomPanel

bottomPanel = new JPanel();

// 設置 bottomPanel 為垂直布局

bottomPanel .setLayout(new BoxLayout(bottomPanel,BoxLayout.Y_AXIS ));

// 創建包含兩個按鈕的 buttonPanel

JPanel buttonPanel = new JPanel();

// 設置 bottomPanel 為水平布局

buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS ));

// 將查詢按鈕加入到 buttonPanel

buttonPanel.add(actionButton);

//加入一個 glue, glue 會擠占兩個按鈕之間的空間

buttonPanel.add(Box.createHorizontalGlue ());

// 將退出按鈕加入到 buttonPanel

buttonPanel.add(closeButton);

// 加入一個 Strut,從而使 bottomPanel 和 middlePanel 上下之間留出距離

bottomPanel .add(Box.createVerticalStrut (10));

// 加入 buttonPanel

bottomPanel .add(buttonPanel);

// 加入一個 Strut,從而使 bottomPanel 和底部之間留出距離

bottomPanel .add(Box.createVerticalStrut (10));

}Show moreShow more icon

我們用一個 Panel 來從上到下放置 topPanel、middlePanel 和 bottomPanel,這個 Panel 采用了 GridBagLayout, 最后我們將這個 Panel 加到一個窗體中去,請參考清單 4。

清單 4. 創建窗體示例代碼清單

public static void main(String[] args) {

// 創建 topPanel

createTopPanel ();

// 創建 middlePanel

createMiddlePanel ();

// 創建 bottomPanel

createBottomPanel ();

// 創建包含 topPanel,middlePanel 和 bottomPanel 的 panelContainer

JPanel panelContainer = new Jpanel();

//panelContainer 的布局為 GridBagLayout

panelContainer.setLayout(new GridBagLayout());

GridBagConstraints c1 = new GridBagConstraints();

c1.gridx = 0;

c1.gridy = 0;

c1.weightx = 1.0;

c1.weighty = 1.0;

c1.fill = GridBagConstraints.BOTH ;

// 加入 topPanel

panelContainer.add(topPanel,c1);

GridBagConstraints c2 = new GridBagConstraints();

c2.gridx = 0;

c2.gridy = 1;

c2.weightx = 1.0;

c2.weighty = 0;

c2.fill = GridBagConstraints.HORIZONTAL ;

// 加入 middlePanel

panelContainer.add(middlePanel,c2);

GridBagConstraints c3 = new GridBagConstraints();

c3.gridx = 0;

c3.gridy = 2;

c3.weightx = 1.0;

c3.weighty = 0;

c3.fill = GridBagConstraints.HORIZONTAL ;

// 加入 bottomPanel

panelContainer.add(bottomPanel,c3);

// 創建窗體

JFrame frame = new JFrame("Boxlayout 演示");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );

panelContainer.setOpaque(true);

frame.setSize(new Dimension(480, 320));

frame.setContentPane(panelContainer);

frame.setVisible(true);

}Show moreShow more icon

本文的例子是在文件 BoxLayoutDemo.zip 中,您將其展開,導入到 Eclipse 中去,就可運行例子。

結束語

您通過本文的介紹,可以對 BoxLayout 這個布局管理器如何進行布局能夠有一定的了解,也可以在自己的實踐過程中進一步總結出自己的方法。

Download

相關主題

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259686.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259686.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259686.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js變量類型

js中有null和undefined&#xff0c;null是指對象不存在&#xff0c;undefined是指原生數據不存在 var h {name:lisi,age:28};console.log(h.name)//對象用的是點語法&#xff0c;php中是name->lisi 下面是數組&#xff0c;數組用的是【】語法 1 var arr [a,3,hello,true];…

OPENCV MFC 程序出錯修改

error C2146: 語法錯誤 : 缺少“;”(在標識符“PVOID64”的前面) 來源:http://houjixin.blog.163.com/blog/static/356284102009112395049370/ DirectShow 2009-12-23 09:50:49 閱讀311 評論0 字號&#xff1a;大中小打開winnt.h文件&#xff0c;發現問題就是在winnt.h頭文件中…

測試人員報BUG的正確姿勢

每次我提需求的時候&#xff0c;都會和開發一言不合就上BUG。曾經看到一個段子&#xff0c;告訴了我&#xff0c;吵架是不行滴&#xff01;影響心情&#xff0c;正確報bug的姿勢應該是這樣&#xff1a;不要對程序員說&#xff0c;你的代碼有BUG。他的第一反應是&#xff1a;1、…

java鏈表實現_鏈表的原理及java實現

一&#xff1a;單向鏈表基本介紹鏈表是一種數據結構&#xff0c;和數組同級。比如&#xff0c;Java中我們使用的ArrayList&#xff0c;其實現原理是數組。而LinkedList的實現原理就是鏈表了。鏈表在進行循環遍歷時效率不高&#xff0c;但是插入和刪除時優勢明顯。下面對單向鏈表…

python和django中的常見錯誤

int() argument must be a string or a number, not tupleError in formatting: coercing to Unicode: need string or buffer, int foundData truncated for column content at row 1sql語句中單引號的設置字段類型字段長度 ascii codec cant decode byte 0xe7 in position 0:…

20141126-解決聯網問題-筆記

當你的網絡出現故障或無法連通時&#xff0c;如何才能簡單高效的找出故障&#xff1f;其實只需要一個ping命令&#xff0c;就可以判斷TCP/IP協議故障…… 1、Ping 127.0.0.1&#xff1a; 127.0.0.1是本地循環地址&#xff0c;如果本地址無法Ping通&#xff0c;則表明本地機TCP/…

inittab腳本啟動解析 (zz)

http://blog.chinaunix.net/uid-17188120-id-4073497.html 1&#xff0c;啟動inittab第一步&#xff1a;啟動內核第二步&#xff1a;執行init &#xff08;配置文件/etc/inittab&#xff09;第三步&#xff1a;啟動相應的腳本&#xff0c;執行inittab腳本&#xff0c;并且執行其…

java緩存技術_java緩存技術

最近在做java緩存,了解了一下.以下僅是對map對方式討論。沒有對點陣圖陣討論。作緩存要做以下2點:1:清理及更新緩存時機的處理:. 虛擬機內存不足,清理緩存.. 緩存時間超時,或訪問次數超出, 啟動線程更新2:類和方法的反射 (線程嵌套調用)reflect.invoke的使用。代碼如下&#xf…

xss challenge 解題思路(1-3)

challenge1: 用很基本的方法即可&#xff0c;截圖如下&#xff1a; 提交后成功彈窗&#xff0c;完成。 challenge2 這次我們發現我們輸入的內容被放入value”“ 中&#xff0c;所以需要將前面的結構閉合&#xff0c;構造如下&#xff1a; "><script>alert(docume…

賓得準餅干廣角鏡頭DA15

DA15的掛機效果圖&#xff0c;感覺還是超級的小&#xff0c;是最小的廣角鏡頭了&#xff1a; 主要特點1. 超廣視角當安裝在賓得數碼單反相機上時&#xff0c;這款全新的鏡頭提供相當于35mm膠片規格的約23mm畫面視角&#xff0c;可使拍攝者拍攝出獨特的誘人影像和超廣角鏡頭獨有…

無限“遞歸”的python程序

如果一個函數直接或者間接調用了自己&#xff0c;那么就形成了遞歸&#xff08;recursion&#xff09;&#xff0c;比如斐波那契數列的一個實現 def fib(n):if n < 2:return 1else:return fib(n - 1) fib(n - 2) 遞歸一定要有結束條件&#xff0c;否則就形成了死循環&#…

java slf4j_SLF4J 使用手冊

原文鏈接 譯者&#xff1a;zivyuJava的簡單日志門面( Simple Logging Facade for Java SLF4J)作為一個簡單的門面或抽象&#xff0c;用來服務于各種各樣的日志框架&#xff0c;比如java.util.logging、logback和log4j。SLF4J允許最終用戶在部署時集成自己想要的日志框架。需要…

[譯]Java 垃圾回收介紹

說明&#xff1a;這篇文章來翻譯來自于Javapapers 的Java Garbage Collection Introduction 在Java中&#xff0c;對象內存空間的分配與回收是由JVM中的垃圾回收進程自動完成的。和C語言不一樣的是&#xff0c;開發中不需要在Java中寫垃圾回收代碼。這也是使Java更加流行而且幫…

打印三角形

直角三角形 #include<iostream> using namespace std; int main() { int i,j; for(i1;i<10;i) {for(j1;j<i;j) cout<<"*"; cout<<endl; } } ———————————————————————————…

Linux基礎入門學習筆記之二

第三節 用戶及文件權限管理 Linux用戶管理 Linux是可以實現多用戶登錄的操作系統 查看用戶who命令用于查看用戶 shiyanlou是當前登錄用戶的用戶名 pts/0中pts表示偽終端&#xff0c;后面的數字表示偽終端的序號。 后面是當前偽終端啟動時間 創建用戶創建用戶需要root權限&#…

java選填_java基礎填空選擇題

Core Java試題選擇填空題&#xff1a;全部為多選題&#xff0c;只有全部正確才能得分。1. 編譯java程序的命令是__B_;運行java程序的命令是____A____;產生java文擋的命令是_____D___;查詢java類型是否是serializable類型的命令是___C_____;產生java安全策略文件的命令是____E__…

這幾天有django和python做了一個多用戶博客系統(可選擇模板) 沒完成,先分享下...

這個TBlog已經全新改版了&#xff0c;更名為UUBlog 新版地址&#xff1a; 用Python和Django實現多用戶博客系統——UUBlog 斷斷續續2周時間吧&#xff0c;用django做了一個多用戶博客系統&#xff0c;現在還沒有做完&#xff0c;做分享下,以后等完善了再慢慢說 做的時候房展了博…

Hibernate的generator屬性

本文講述Hibernate的generator屬性的意義。Generator屬性有7種class&#xff0c;本文簡略描述了這7種class的意義和用法。[xhtml] view plaincopy <class name"onlyfun.caterpillar.User" table"USER"> <id name"id" type"stri…

java 對象池 博客_Java對象池技術的原理及其實現的小結

一起學習Java對象的生命周期大致包括三個階段&#xff1a;對象的創建&#xff0c;對象的使用&#xff0c;對象的清除。因此&#xff0c;對象的生命周期長度可用如下的表達式表示&#xff1a;T T1 T2 T3。其中T1表示對象的創建時間&#xff0c;T2表示對象的使用時間&#xff0c…

matlab中gatbx工具箱的添加

1. 從http://crystalgate.shef.ac.uk/code/下載工具箱壓縮包gatbx.zip 2. 解壓gatbx.zip&#xff0c;將其子文件夾genetic放在matlab安裝目錄toolbox文件夾下 3. 在matlab主窗口選擇File -> Set Path&#xff0c; 單擊"Add Folder"按鈕&#xff0c;找到工具箱所在…