首先要滿足一些先決條件:
-您應該對Java語法有一個清晰的了解,因為我不會教它。
-您應該已經下載了Eclipse(任何人都可以做,例如Indigo,Galileo,Ganymede等)
–您應該下載acm.jar文件,并將其作為外部jar文件包含到您的項目中。
注意 :如果可以下載Eclipse或從命令提示符執行。 如果從命令提示符執行,請不要忘記將acm.jar的路徑輸入到Environment Variable-> CLASSPATH ,否則將引發錯誤。
AWT(抽象窗口工具包)提供了可在Java小程序中使用的GUI組件,但是這里我們還將使用acm.jar庫。
java.awt軟件包和acm。* / acm.program。 *軟件包包含GUI組件。
現在,我們應該描述將用于構建GUI的組件。
帆布
畫布(在java.awt中)/ GCanvas(acm。*)是一個類,它在后臺提供畫布以在其上添加對象。 這是由圖形程序自動創建的。
GCanvas的一些方法是:
add(object):將對象添加到畫布上。
add(object,x,y) :將對象添加到指定的位置(x,y)。
add(object,position) :將對象添加到指定的位置(SOUTH,NORTH,EAST,WEST)。
remove(object) :刪除該特定對象
removeAll() :從畫布上刪除所有對象。
setBackground(color) :設置畫布的背景。
要了解有關GCanvas方法的更多信息, 請單擊此處 。
要了解Canvas方法, 請單擊此處 。
容器:
您可以使用add方法將GUI組件添加到容器中。
有兩種類型的容器Window和Panel 。
視窗 :
窗口是一個獨立于其他容器的容器。 窗口有兩種類型:“ 框架”和“ 對話框” 。 框架是帶有標題和角的窗口,可以調整大小,而對話框是簡單的窗口。 我們可以移動一個對話框,但不能調整其大小。
面板 :
面板必須包含在另一個容器或Web瀏覽器窗口中。 您必須將面板放入要顯示的窗口中。
定位和尺寸調整 組件 :
容器中組件的位置和大小是借助布局管理器確定的。 容器具有布局管理器的實例。 每當容器需要調整其內部組件的大小或位置時,它都會調用布局管理器并進行必要的處理。
在布局管理器類中定義了不同的方法來實現重新定位和調整大小。
鏡框
框架是Window的子類。 Frame從Container類繼承其屬性,因此您可以使用add方法將組件添加到Frame中 。
Frame的默認布局是BorderLayout ,認為可以通過setLayout方法進行更改。
構造函數Frame (String)創建一個新的不可見Frame對象,其標題由String指定。
范例:
//Program using the acm library
import javax.swing.*;
import java.awt.*;
import acm.program.*;public class FrameExample extends GraphicsProgram{private JFrame f;public FrameExample(){f = new JFrame("Code 2 Learn");}public void launchMyFrame(){f.setSize(300,300);f.setBackground(Color.blue);f.setVisible(true);}public void init(){FrameExample fe=new FrameExample();fe.launchMyFrame();}
}
//Program using the w/o acm library
import java.awt.*;public class FrameExample{ private Frame f;public FrameExample(){f = new Frame("Code 2 Learn");}public void launchMyFrame(){f.setSize(300,300);f.setBackground(Color.blue);f.setVisible(true);}public static void main(String args[]){FrameExample fe=new FrameExample();fe.launchMyFrame();}
}
面板:
面板 (如Frame)為您提供了附加GUI組件的空間。 每個面板可以有自己的布局管理器。
創建面板后,我們必須將其添加到Window或Frame中 。 這可以使用add()方法來實現。
范例:
//Program using the acm library
import javax.swing.*;
import java.awt.Color;
import acm.program.*;public class FrameExample extends GraphicsProgram{private JFrame f;private JPanel p;public FrameExample(){f = new JFrame("Code 2 Learn");p=new JPanel();}public void launchMyFrame(){f.setSize(300,300);f.setLayout(null); //Override the default layout managerp.setSize(300, 50);p.setBackground(Color.BLACK);f.add(p);f.setVisible(true);}public static void main(String args[]){FrameExample fe=new FrameExample();fe.launchMyFrame();}
}
/Program using the w/o acm library
import javax.swing.*;
import java.awt.*;public class FrameNPanel{private Frame f;private Panel p;public FrameNPanel(){f = new Frame("Code 2 Learn");p=new Panel();}public void launchMyFrame(){f.setSize(300,300);f.setLayout(null); //Override the default layout managerp.setSize(300, 50);p.setBackground(Color.BLACK);f.add(p);f.setVisible(true);}public static void main(String args[]){FrameNPanel fe=new FrameNPanel();fe.launchMyFrame();}
}
我已經解釋了可以放置物品的面板,框架和窗戶。 但是我們在上一教程中沒有設置窗口,面板或框架的布局,而是使用默認布局。
現在,我們將了解可用于使用和操作GUI的布局上的不同類型。
容器布局:
容器中每個組件的布局均由布局管理器控制 。 每個容器(例如Panel或Frames )都有一個與之關聯的默認布局管理器,我們可以更改它。
布局管理器:
Java編程語言隨附以下布局管理器:
- FlowLayout – FlowLayout是Panel和Applet的默認布局管理器。 當組件放置在具有布局管理器作為FlowLayout的容器中時,組件將彼此相鄰放置以形成流(就像直線上的學生一樣)
- BorderLayout – BorderLayout是Window, Dialog和Frame的默認布局管理器。 應用BorderLayout時,將根據給出的選擇使組件顯示在邊界上,即WEST,SOUTH,NORTH,CENTER或EAST。

- GridLayout –此布局管理器提供了將組件放置在容器上的靈活性

- CardLayout –它使用兩個或多個共享相同顯示的組件(如下所示)。

- GridBagLayout – GridBagLayout是Java環境中最靈活,最復雜的布局管理器。 它放置的是組件以及行和列,因此允許我們進行行跨度或列跨度以便放置在組件上。

注意 :
默認情況下,所有Window類都使用BorderLayout管理器,而Panel類則使用FlowLayout管理器。 名為setLayout()的函數用于更改容器的布局(示例中如下所示)。
一個簡單的FlowLayout示例:
import java.awt.*;public class GUI2 {private Frame f;private Button but1;private Button but2;public GUI2(){f = new Frame("CODE 2 LEARN");but1 = new Button("Like Code 2 Learn");but2 = new Button("Don't Like Code 2 Learn");}public void generateGUI(){f.setLayout(new FlowLayout());f.add(but1);f.add(but2);f.pack();f.setVisible(true);}public static void main(String[] args) {GUI2 launchgui= new GUI2();launchgui.generateGUI();}
}
參考: Java Code Tutorial – 1和Java Graphics Tutorial -II,來自我們的JCG合作伙伴 Farhan Khwaja,位于Code 2 Learn博客上。
翻譯自: https://www.javacodegeeks.com/2012/02/graphics-tutorial.html