import java.awt.Button;
站在用戶的角度思考問題,與客戶深入溝通,找到博湖網(wǎng)站設(shè)計(jì)與博湖網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋博湖地區(qū)。
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class awttest
{
TextField id,pw;
TextField printid,printpw;
public awttest(){
Frame f=new Frame("用戶登錄");
f.setLayout(new GridLayout(4,2));
id=new TextField("輸入用戶名",10);
pw=new TextField(10);
pw.setEchoChar('*');
f.add(new Label("用戶名:",Label.CENTER));
f.add(id);
f.add(new Label("密碼:",Label.CENTER));
f.add(pw);
Button b1=new Button("登陸");
Button b2=new Button("取消");
f.add(b1);
f.add(b2);
String str1=id.getText();
String str2=pw.getText();
printid=new TextField(str1,10);
printpw=new TextField(str2,10);
f.add(printid);
f.add(printpw);
f.pack();
printid.setBackground(new Color(220,0,0));
printpw.setBackground(new Color(220,0,0));
f.setSize(250,120);
f.setVisible(true);
b1.addActionListener(new ActionListener() { // 點(diǎn)擊“顯示窗口”菜單后將窗口顯示出來
public void actionPerformed(ActionEvent e) {
printid.setText(id.getText());
printpw.setText(pw.getText());
}
});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent args)
{
System.exit(0);
}
}
);
}
public static void main(String[] args){
new awttest();
}
}
OK!!可以運(yùn)行
一: 首先弄清題目的意思
A.需要的主要組件列表:
1. ?創(chuàng)建一個(gè)窗口,窗口標(biāo)題叫Information
2. ?3個(gè)標(biāo)簽, 用于顯示文字 Name Number Class
3. ?3個(gè)文本框, 用于填寫信息
4. ?1個(gè)按鈕, ?文字是確認(rèn)
5. ?1個(gè)文本域
B.業(yè)務(wù)邏輯
1. 當(dāng)點(diǎn)擊按鈕確認(rèn)的時(shí)候, 把 文本框的信息顯示到文本域
C.設(shè)計(jì)的主要技術(shù)
JLabel , JButton, JTextField ...等, 都是swing的組件 , ?所以應(yīng)該使用swing進(jìn)行創(chuàng)建
二: ?確定使用的布局
swing雖然重寫了大部分的組件, 但是布局, 依舊沿襲awt技術(shù)
分析圖片上的布局:
至少有2種方法可以實(shí)現(xiàn),?
方法一: 絕對(duì)布局 , 優(yōu)點(diǎn): ?配合可視化GUI拖曳, 可以完美的實(shí)現(xiàn)圖上的組件的位置
但是缺點(diǎn)也是致命的, 不同的操作系統(tǒng)平臺(tái)下, 可能會(huì)出現(xiàn)位置的移動(dòng),
只適合開發(fā)平臺(tái), 移植效果差 . ?所以不推薦使用
方法二: 靈活的表格布局, 配合流式布局 , 所有操作系統(tǒng)下,顯示效果都比較統(tǒng)一.?
三: 效果圖
四: 參考代碼
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?FrameDemo?extends?JFrame?{
//申明需要的組件
private?final?JTextField?jtf1,jtf2,jtf3;
private?final?JTextArea?jta;
public?FrameDemo()?{
setTitle("Information");//設(shè)置窗口標(biāo)題
setSize(320,?360);//設(shè)置窗口大小
setLocationRelativeTo(null);//設(shè)置窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//設(shè)置關(guān)閉時(shí)退出虛擬機(jī)
getContentPane().setLayout(new?FlowLayout());//設(shè)置窗口布局為流式布局
JPanel?jp?=?new?JPanel(new?GridLayout(4,?2));//設(shè)置jp面板為表格布局4行2列
//第一行
JPanel?jp01?=?new?JPanel();
JLabel?jl1?=?new?JLabel("Name:");
jp01.add(jl1);
JPanel?jp1?=?new?JPanel();
jtf1?=?new?JTextField(8);
jp1.add(jtf1);
//第二行
JPanel?jp02?=?new?JPanel();
JLabel?jl2?=?new?JLabel("Number:");
jp02.add(jl2);
JPanel?jp2?=?new?JPanel();
jtf2?=?new?JTextField(8);
jp2.add(jtf2);
//第三行
JPanel?jp03?=?new?JPanel();
JLabel?jl3?=?new?JLabel("Class:");
jp03.add(jl3);
JPanel?jp3?=?new?JPanel();
jtf3?=?new?JTextField(8);
jp3.add(jtf3);
//第四行
JPanel?jp04?=?new?JPanel();
JLabel?jl4?=?new?JLabel("");
jp04.add(jl4);
JPanel?jp4?=?new?JPanel();
JButton?jb?=?new?JButton("確認(rèn)");
jp4.add(jb);
jp.add(jp01);
jp.add(jp1);
jp.add(jp02);
jp.add(jp2);
jp.add(jp03);
jp.add(jp3);
jp.add(jp04);
jp.add(jp4);
getContentPane().add(jp);
jta?=?new?JTextArea();
jta.setColumns(20);//設(shè)置文本域的大小
jta.setEditable(false);//設(shè)置文本域不可編輯
jta.setBackground(jp.getBackground());//設(shè)置文本域的背景色和面板一樣
getContentPane().add(jta);
jb.addActionListener(new?ActionListener()?{//給按鈕添加事件
public?void?actionPerformed(ActionEvent?e)?{//點(diǎn)擊按鈕,顯示信息到文本域
String?name?=?jtf1.getText();
String?number?=?jtf2.getText();
String?clazz?=?jtf3.getText();
jta.setText("You?name?is?"+name+"?number?is?"+number+"?class?is?"+clazz);
}
});
}
public?static?void?main(String[]?args)?{
new?FrameDemo().setVisible(true);//創(chuàng)建窗口,被設(shè)置為可見
}
}
五: 拓展
雖然圖形界面的實(shí)現(xiàn)方法是多樣的, ?我們一定要根據(jù)具體情況, 選擇一個(gè)比較優(yōu)化的 合理的, 符合業(yè)務(wù)邏輯的實(shí)現(xiàn)方法
準(zhǔn)備工作:
1、下載JDK;
2、下載Eclipse;
3、下載相應(yīng)的EMF、GEF、VE;
注意:三個(gè)插件的版本要和Eclipse的版本配套才能正確使用,至于配套的說明請(qǐng)參考下載頁面的說明
開始安裝:
1、安裝JDK;
這個(gè)比較容易,標(biāo)準(zhǔn)的Windows安裝程序,下一步,再下一步即可,安裝完成后,也不需要重啟。
2、安裝Eclipse;
Eclipse是綠色軟件,不需要安裝,只需要解壓縮,然后即可運(yùn)行。
為了說明方便,我把它解壓縮到C盤根目錄下,得到C:\eclipse目錄,運(yùn)行C:\eclipse\eclipse.exe即可。
注意:下面的安裝,需要先關(guān)閉eclipse程序。
3、安裝EMF、GEF、VE;
對(duì)于Eclipse來說,這些都是它的插件,所以,安裝方法都是一樣的。插件下載地址
A、在C:\eclipse目錄下,建立四個(gè)子目錄:C:\eclipse\emf、C:\eclipse\gef、C:\eclipse\ve、C:\eclipse\links;
B、把下載的EMF、GEF、VE都解壓縮到相應(yīng)的目錄中,即:把EMF壓縮包解壓縮到C:\eclipse\emf中,得到C:\eclipse\emf\eclipse目錄,以此類推,完成GEF、VE的解壓縮;
C、在C:\eclipse\links目錄下,新建一個(gè)文本文件,名字可隨便取,如:link.txt。
然后在link.txt文件中,加入以下三行文字:
path=emf
path=gef
path=VE
注意:這里用的是相對(duì)路徑,也可以把EMF、GEF、VE解壓縮到其它地方,再用絕對(duì)路徑即可。
再注意:絕對(duì)路徑是用 “/” 或者 “\\” 分隔,而不是“\”
補(bǔ)充知識(shí):為什么ve需要emf和gef:
Visual Editor 所利用的最為明顯的工具是 GEF,即圖形化編輯框架(Graphical Editing
Framework)。GEF 建立于本地 Eclipse 圖形化工具集 SWT
之上,以使得開發(fā)一個(gè)圖形化編輯器或者所見即所得文本編輯器更為容易。如果您熟悉 SWT (或者
AWT/Swing,在這方面它們是類似的)中的圖形原語,那么您會(huì)知道繪制和處理任意的形狀(比如矩形、箭頭和橢圓)是比較困難的,更不用說管理它們之間的關(guān)系以及它們所代表的數(shù)據(jù)模型了。
GEF 被劃分為兩個(gè)部分:第一部分是 Draw2D 插件,這是一個(gè)輕量級(jí)的繪圖和呈現(xiàn)包,用于幫助您繪制圖形。第二部分是 GEF 插件,除了其他工具以外,這一部分中還增加了選擇和創(chuàng)建工具、工具選項(xiàng)板,以及用于在數(shù)據(jù)模型和視圖之間進(jìn)行映射的控制器框架。
GEF
是一個(gè)模型無關(guān)的框架,但是作為 Visual Editor (以及其他生成代碼的圖形化工具)的一部分,它在后臺(tái)使用 Eclipse
建??蚣埽‥clipse Modeling Framework, EMF),以在模型、Java 類和圖形化表示之間進(jìn)行映射,其中模型是使用
XML 元數(shù)據(jù)交換(XML Metadata Interchange, XMI)在內(nèi)部存儲(chǔ)的。EMF
的重要特性之一是它確保所有這些映射都是一對(duì)一的;所以盡管 XMI
可以被認(rèn)為是模型的標(biāo)準(zhǔn)表示,但是在代碼和圖形之間來回切換并不會(huì)丟失任何信息。這就是為什么 Visual Editor
只需要保存模型的一種表示(即 Java 源代碼),以及開發(fā)人員可以自由地在圖形化編輯器之外編輯該源代碼的原因。
4、安裝完畢,再次運(yùn)行Eclipse,它啟動(dòng)時(shí)會(huì)自動(dòng)查找links目錄下所有的文本文件,并加載其中path指向的所有插件,這里當(dāng)然包括VE。
A、如果不能確定是否已經(jīng)加載,可選擇菜單Help-Software Updates-Manage Configuration,打開Product Configuration窗體,在其左邊的樹形欄里,可以看到已加載的插件。
B、如果加載沒有成功,可以試試用Eclipse -clear來運(yùn)行程序。
C、如果加載仍沒有成功,可以試試刪除C:\eclipse\configuration下的內(nèi)容,僅保留config.ini文件。然后再用Eclipse來運(yùn)行程序。
================================================================
啟動(dòng)eclipse平臺(tái)。剛開始,你可能覺得eclipse并沒有什么變化。先別急,請(qǐng)新建一個(gè)項(xiàng)目,點(diǎn)擊"文件"菜單下的"新建"子菜單,選擇并建立一個(gè)新的"java項(xiàng)目"。然后在工具欄上的"新建Java類" 圖標(biāo)上,點(diǎn)擊右邊的小箭頭,將展開如下圖的菜單:
在此菜單上,多了一個(gè)"Visual Calss"的子菜單,這就是進(jìn)入Visual Editor的入口之一。點(diǎn)擊"Visual Class",就會(huì)彈出創(chuàng)建GUI程序的對(duì)話框,選擇完畢后,就會(huì)進(jìn)入可視化編輯畫面:
用VE寫個(gè)Hello:
1、新建一個(gè)項(xiàng)目;
File-New-Project...,選擇“Java Project”,然后Next,輸入一個(gè)項(xiàng)目名字:Hello,其它全部默認(rèn),最后回車,或者點(diǎn)擊“Finish”完成。
2、設(shè)置SWT庫(kù);
A、選擇項(xiàng)目Hello,右鍵菜單,打開Properties對(duì)話框。
B、選擇左邊樹形中的Java Build Path,在其設(shè)置頁中,選擇Libraries頁,點(diǎn)擊“Add Library...”;
C、在打開的Add Library對(duì)話框里,選擇Standard Widget Toolkit(SWT),Next;
D、在打開的SWT Library Options對(duì)話框中,勾選上“Include support for JFace library”,F(xiàn)inish即可。
E、回到Properties對(duì)話框,OK即可。
3、新建Hellworld.java文件;
A、選擇項(xiàng)目Hello,右鍵菜單,New-Other...(或者點(diǎn)擊工具欄里新建圖標(biāo)),打開Select a wizard對(duì)話框,選擇Java/Visual Class,Next;
B、在打開的Java Visual Class對(duì)話框中,
在Package里,輸入:com.cnblogs.pan;
在Name里,輸入:Helloworld;
在Style里,選擇SWT/Shell;
勾選上public static void main(String[] args);
最后Finish。
4、到了這一步,應(yīng)該就可以看到窗體了,那些控件都在Palette里,點(diǎn)開就能看到了。
A、在窗體上右擊,選擇Set Layout,再選擇null;(此處為個(gè)人習(xí)慣)
B、從Palette里,選中一個(gè)Button,并在窗體任意位置畫一個(gè)Button,在下面的Properties窗口里,設(shè)置其text為ClickMe;
C、選中該按鈕,右擊選擇Events-Add Event,在打開的對(duì)話框中,選擇左邊的widgetSelected,F(xiàn)inish。
D、這時(shí),光標(biāo)會(huì)自動(dòng)定位到程序相應(yīng)的位置,我們?cè)诔绦蚶锛尤胂旅嬲Z句:
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
System.out.println("widgetSelected()");
MessageDialog.openInformation(null, "Hello", "Hello World!");//加入這條語句
}
E、保存程序,點(diǎn)擊菜單Run-Run As-Java Application,呵呵,跟全世界打個(gè)招呼吧!
新聞標(biāo)題:java可視化界面代碼 java圖形化界面代碼
文章分享:http://muchs.cn/article14/hgsjde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、云服務(wù)器、做網(wǎng)站、建站公司、網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)