首先:采用什么技術(shù)實(shí)現(xiàn)
創(chuàng)新互聯(lián)專注于康縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供康縣營銷型網(wǎng)站建設(shè),康縣網(wǎng)站制作、康縣網(wǎng)頁設(shè)計(jì)、康縣網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造康縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供康縣網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
java語言可以使用awt 和swing等技術(shù)實(shí)現(xiàn)圖形界面
推薦使用Swing,因?yàn)镾wing比AWT更專業(yè),更漂亮,組件更豐富,功能更強(qiáng)大。
2. ??其次:分析采用什么布局
邊界布局BorderLayout,配合表格布局GridLayout,既簡單又美觀
3. ??最后:分析需求中需要用的組件
學(xué)生姓名 學(xué)號(hào) ?顯示信息 需要用到文本框JTextField
單選按鈕 需要用到組件?JRadioButton
復(fù)選框 ? ?需要用到組件?JCheckBox
組合框 ? ?需要用到組件?JComboBox
圖片效果
參考代碼如下
//導(dǎo)入所需要的包
import?java.awt.event.*;
import?javax.swing.border.*;
import?javax.swing.*;
import?java.awt.*;
public?class?ClassFrame?extends?JFrame?{//?寫一個(gè)類繼承自JFrame?窗體
//?定義組件
private?static?final?long?serialVersionUID?=?1L;
private?JPanel?contentPane;
private?JTextField?tfName,?tfNum,?allInfo;
private?JRadioButton?rb1,?rb2;
private?JCheckBox?cb1,?cb2,?cb3;
private?JComboBoxString?t1,?t2,?t3;
public?static?void?main(String[]?args)?{
EventQueue.invokeLater(new?Runnable()?{
public?void?run()?{
try?{
ClassFrame?frame?=?new?ClassFrame();//?創(chuàng)建一個(gè)窗口實(shí)例
frame.setVisible(true);//?讓該窗口實(shí)例可見
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
});
}
/**
?*?窗口屬性的設(shè)置,內(nèi)部組件的初始化
?*/
public?ClassFrame()?{
setTitle("選課ing...");//標(biāo)題
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//?設(shè)置關(guān)閉是退出JVM
setSize(450,?339);//?設(shè)置窗體大小
setLocationRelativeTo(null);//?窗體居中
contentPane?=?new?JPanel();//?內(nèi)容面板
contentPane.setBorder(new?EmptyBorder(5,?5,?5,?5));
contentPane.setLayout(new?BorderLayout(0,?0));//?設(shè)置布局
setContentPane(contentPane);
JPanel?panel?=?new?JPanel(new?GridLayout(5,?1,?5,?10));//5行1列的表格布局
panel.setBorder(new?TitledBorder(null,?"",?TitledBorder.LEADING,?TitledBorder.TOP,?null,?null));
contentPane.add(panel,?BorderLayout.CENTER);//給panel添加邊框
JPanel?panel_1?=?new?JPanel();
panel.add(panel_1);
JLabel?label?=?new?JLabel("姓名");
panel_1.add(label);
tfName?=?new?JTextField();
panel_1.add(tfName);
tfName.setColumns(10);
JLabel?label_2?=?new?JLabel("學(xué)號(hào)");
panel_1.add(label_2);
tfNum?=?new?JTextField();
tfNum.setColumns(10);
panel_1.add(tfNum);
rb1?=?new?JRadioButton("男");
panel_1.add(rb1);
rb1.setSelected(true);//設(shè)置單選按鈕中,默認(rèn)選擇的按鈕
rb2?=?new?JRadioButton("女");
panel_1.add(rb2);
ButtonGroup?bts?=?new?ButtonGroup();//單選按鈕需要加入同一個(gè)ButonGroup中才能生效
bts.add(rb1);
bts.add(rb2);
JPanel?panel_2?=?new?JPanel();
panel.add(panel_2);
cb1?=?new?JCheckBox("高等數(shù)學(xué)");
panel_2.add(cb1);
t1?=?new?JComboBoxString();
t1.setModel(new?DefaultComboBoxModelString(new?String[]?{?"林老師",?"趙老師",?"孫老師"?}));
panel_2.add(t1);
JPanel?panel_3?=?new?JPanel();
panel.add(panel_3);
cb2?=?new?JCheckBox("世界經(jīng)濟(jì)");
panel_3.add(cb2);
t2?=?new?JComboBoxString();
t2.setModel(new?DefaultComboBoxModelString(new?String[]?{?"張老師",?"劉老師"?}));
panel_3.add(t2);
JPanel?panel_4?=?new?JPanel();
panel.add(panel_4);
cb3?=?new?JCheckBox("音樂賞析");
panel_4.add(cb3);
t3?=?new?JComboBoxString();
t3.setModel(new?DefaultComboBoxModelString(new?String[]?{?"王老師",?"周老師"?}));
panel_4.add(t3);
JPanel?panel_5?=?new?JPanel();
panel.add(panel_5);
JButton?jbOk?=?new?JButton("確定");
panel_5.add(jbOk);
JButton?jbRest?=?new?JButton("重填");
panel_5.add(jbRest);
JPanel?panelSouth?=?new?JPanel();
contentPane.add(panelSouth,?BorderLayout.SOUTH);
JLabel?labe?=?new?JLabel("選課信息");
labe.setHorizontalAlignment(SwingConstants.LEFT);
panelSouth.add(labe);
allInfo?=?new?JTextField();
allInfo.setColumns(30);
panelSouth.add(allInfo);
JPanel?panelNorth?=?new?JPanel();
contentPane.add(panelNorth,?BorderLayout.NORTH);
JLabel?labelTitle?=?new?JLabel("學(xué)生選課界面");
labelTitle.setForeground(Color.DARK_GRAY);
labelTitle.setFont(new?Font("宋體",?Font.BOLD,?20));
panelNorth.add(labelTitle);
//給確定按鈕添加事件處理代碼
jbOk.addActionListener(new?ActionListener()?{
public?void?actionPerformed(ActionEvent?e)?{
StringBuilder?info?=?new?StringBuilder();
String?name?=?tfName.getText();
String?num?=?tfNum.getText();
String?sex;
if?(rb1.isSelected())?{
sex?=?"男";
}?else?{
sex?=?"女";
}
info.append(name?+?num?+?sex);
if?(cb1.isSelected())?{
String?c?=?cb1.getText();
String?t?=?t1.getSelectedItem().toString();
info.append("?"?+?c?+?t);
}
if?(cb2.isSelected())?{
String?c?=?cb2.getText();
String?t?=?t2.getSelectedItem().toString();
info.append("?"?+?c?+?t);
}
if?(cb3.isSelected())?{
String?c?=?cb3.getText();
String?t?=?t3.getSelectedItem().toString();
info.append("?"?+?c?+?t);
}
allInfo.setText(info.toString());//把學(xué)生信息和選課信息放到文本框
}
});
//給重填按鈕?設(shè)置事件處理代碼
jbRest.addActionListener(new?ActionListener()?{
public?void?actionPerformed(ActionEvent?e)?{
tfName.setText("");
tfNum.setText("");
rb1.setSelected(true);
cb1.setSelected(false);
t1.setSelectedIndex(0);
cb2.setSelected(false);
t2.setSelectedIndex(0);
cb3.setSelected(false);
t3.setSelectedIndex(0);
allInfo.setText("");
}
});
}
}
好像是作業(yè), 源代碼發(fā)給你參考, ?注意學(xué)習(xí)下代碼. ?了解下布局 和按鈕的工作原理
參考代碼
import?java.awt.*;
import?java.awt.event.*;
public?class?MyRandomFrame?extends?Frame?implements?ActionListener?{
private?final?TextField?tf1;
private?final?TextField?tf2;
private?final?TextField?tf3;
public?static?void?main(String[]?args)?{
new?MyRandomFrame().setVisible(true);
}
public?MyRandomFrame()?{
setSize(600,?100);
setLocationRelativeTo(null);
setTitle("學(xué)號(hào):XXXXX??姓名:張三");
Button?but1?=?new?Button("獲取1~100之間的隨機(jī)數(shù)");
but1.setActionCommand("隨即");
but1.addActionListener(this);
Label?label1?=?new?Label("第一個(gè)數(shù):");
tf1?=?new?TextField(5);
Label?label2?=?new?Label("第二個(gè)數(shù):");
tf2?=?new?TextField(5);
Button?but2?=?new?Button("求和");
but2.setActionCommand("求和");
but2.addActionListener(this);
tf3?=?new?TextField(5);
setLayout(new?FlowLayout());
add(but1);
add(label1);
add(tf1);
add(label2);
add(tf2);
add(but2);
add(tf3);
addWindowListener(new?WindowAdapter()?{//?關(guān)閉窗口
@Override
public?void?windowClosing(WindowEvent?e)?{
System.exit(0);
}
});
}
@Override
public?void?actionPerformed(ActionEvent?e)?{
String?command?=?e.getActionCommand();
if?(command.equals("隨即"))?{
int?a?=?(int)?(Math.random()?*?100);
int?b?=?(int)?(Math.random()?*?100);
tf1.setText(String.valueOf(a));
tf2.setText(String.valueOf(b));
}?else?if?(command.equals("求和"))?{
int?x?=?Integer.parseInt(tf1.getText());
int?y?=?Integer.parseInt(tf2.getText());
tf3.setText(String.valueOf((x?+?y)));
}
}
}
一: 首先弄清題目的意思
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)方法
我覺得,頁面布局什么的,這個(gè)不用說了吧。。就是邏輯而已,點(diǎn)擊“第一步”,判斷有沒有輸入,如果有輸入,判斷是不是正整數(shù),如果條件符合,那么第一格顯示輸入的值,然后第二格,處理下(其實(shí)就是for循環(huán)String,倒序)然后第三格=第一格+第二格的值;
第二步,同樣獲得第一步最后一個(gè)的和值,然后類似第一步。如下類似
概述
具體框架使用jframe,文本框組件:JTextField;密碼框組件:JPasswordField;標(biāo)簽組件:JLabel;復(fù)選框組件:JCheckBox;單選框組件:JRadioButton;按鈕組件JButton。
登錄界面:
代碼實(shí)例
import javax.swing.*;
import java.awt.*; ? //導(dǎo)入必要的包
public class denglu extends JFrame{
JTextField jTextField ;//定義文本框組件
JPasswordField jPasswordField;//定義密碼框組件
JLabel jLabel1,jLabel2;
JPanel jp1,jp2,jp3;
JButton jb1,jb2; //創(chuàng)建按鈕
public denglu(){
jTextField = new JTextField(12);
jPasswordField = new JPasswordField(13);
jLabel1 = new JLabel("用戶名");
jLabel2 = new JLabel("密碼");
jb1 = new JButton("確認(rèn)");
jb2 = new JButton("取消");
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
//設(shè)置布局
this.setLayout(new GridLayout(3,1));
jp1.add(jLabel1);
jp1.add(jTextField);//第一塊面板添加用戶名和文本框
jp2.add(jLabel2);
jp2.add(jPasswordField);//第二塊面板添加密碼和密碼輸入框
jp3.add(jb1);
jp3.add(jb2); //第三塊面板添加確認(rèn)和取消
// ? ? ? ?jp3.setLayout(new FlowLayout()); ?//因?yàn)镴Panel默認(rèn)布局方式為FlowLayout,所以可以注銷這段代碼.
this.add(jp1);
this.add(jp2);
this.add(jp3); ?//將三塊面板添加到登陸框上面
//設(shè)置顯示
this.setSize(300, 200);
//this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setTitle("登陸");
}
public static void main(String[] args){
new denglu();
}
}
拓展內(nèi)容
java swing包
Swing 是一個(gè)為Java設(shè)計(jì)的GUI工具包。
Swing是JAVA基礎(chǔ)類的一部分。
Swing包括了圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表。
Swing提供許多比AWT更好的屏幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平臺(tái)運(yùn)行,這一點(diǎn)不像AWT。它們是JFC的一部分。它們支持可更換的面板和主題(各種操作系統(tǒng)默認(rèn)的特有主題),然而不是真的使用原生平臺(tái)提供的設(shè)備,而是僅僅在表面上模仿它們。這意味著你可以在任意平臺(tái)上使用JAVA支持的任意面板。輕量級(jí)組件的缺點(diǎn)則是執(zhí)行速度較慢,優(yōu)點(diǎn)就是可以在所有平臺(tái)上采用統(tǒng)一的行為。
概念解析:
JFrame?– java的GUI程序的基本思路是以JFrame為基礎(chǔ),它是屏幕上window的對(duì)象,能夠最大化、最小化、關(guān)閉。
JPanel?– Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進(jìn)行嵌套,功能是對(duì)窗體中具有相同邏輯功能的組件進(jìn)行組合,是一種輕量級(jí)容器,可以加入到JFrame窗體中。。
JLabel?– JLabel 對(duì)象可以顯示文本、圖像或同時(shí)顯示二者。可以通過設(shè)置垂直和水平對(duì)齊方式,指定標(biāo)簽顯示區(qū)中標(biāo)簽內(nèi)容在何處對(duì)齊。默認(rèn)情況下,標(biāo)簽在其顯示區(qū)內(nèi)垂直居中對(duì)齊。默認(rèn)情況下,只顯示文本的標(biāo)簽是開始邊對(duì)齊;而只顯示圖像的標(biāo)簽則水平居中對(duì)齊。
JTextField?–一個(gè)輕量級(jí)組件,它允許編輯單行文本。
JPasswordField?– 允許我們輸入了一行字像輸入框,但隱藏星號(hào)(*) 或點(diǎn)創(chuàng)建密碼(密碼)
JButton?– JButton 類的實(shí)例。用于創(chuàng)建按鈕類似實(shí)例中的 "Login"。
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class aaa
{
/**
* @param args
*/
public static void main(String[] args)
{
TextFrame frame = new TextFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class TextFrame extends JFrame
{
public TextFrame()
{
setTitle("考試題目");
setBounds(300,300,200,120);
TextPanel panel = new TextPanel();
add(panel);
}
}
class TextPanel extends JPanel
{
private JRadioButton r1,r2;
public TextPanel()
{
//實(shí)例化單選按鈕
r1 = new JRadioButton("男");
r2 = new JRadioButton("女");
JPanel p = new JPanel();
p.setBorder(BorderFactory.createTitledBorder("請(qǐng)選擇性別"));
p.add(r1);
p.add(r2);
ButtonGroup bg = new ButtonGroup();
//將需要?jiǎng)澐譃橐唤M的單選按鈕對(duì)象添加到按鈕組(注意只是邏輯上添加 和界面沒有關(guān)系)
bg.add(r1);
bg.add(r2);
add(p);
}
}
文章標(biāo)題:界面設(shè)計(jì)java代碼,java界面設(shè)計(jì)教程
分享地址:http://www.yijiale78.com/article22/hdejcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、用戶體驗(yàn)、、手機(jī)網(wǎng)站建設(shè)、商城網(wǎng)站、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)