概述
創(chuàng)新互聯(lián)建站致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括成都做網(wǎng)站、網(wǎng)站制作、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)建站為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)建站核心團隊十載專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。
具體框架使用jframe,文本框組件:JTextField;密碼框組件:JPasswordField;標(biāo)簽組件:JLabel;復(fù)選框組件:JCheckBox;單選框組件:JRadioButton;按鈕組件JButton。
登錄界面:
代碼實例
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("確認");
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); //第三塊面板添加確認和取消
// ? ? ? ?jp3.setLayout(new FlowLayout()); ?//因為JPanel默認布局方式為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 是一個為Java設(shè)計的GUI工具包。
Swing是JAVA基礎(chǔ)類的一部分。
Swing包括了圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表。
Swing提供許多比AWT更好的屏幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平臺運行,這一點不像AWT。它們是JFC的一部分。它們支持可更換的面板和主題(各種操作系統(tǒng)默認的特有主題),然而不是真的使用原生平臺提供的設(shè)備,而是僅僅在表面上模仿它們。這意味著你可以在任意平臺上使用JAVA支持的任意面板。輕量級組件的缺點則是執(zhí)行速度較慢,優(yōu)點就是可以在所有平臺上采用統(tǒng)一的行為。
概念解析:
JFrame?– java的GUI程序的基本思路是以JFrame為基礎(chǔ),它是屏幕上window的對象,能夠最大化、最小化、關(guān)閉。
JPanel?– Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進行嵌套,功能是對窗體中具有相同邏輯功能的組件進行組合,是一種輕量級容器,可以加入到JFrame窗體中。。
JLabel?– JLabel 對象可以顯示文本、圖像或同時顯示二者??梢酝ㄟ^設(shè)置垂直和水平對齊方式,指定標(biāo)簽顯示區(qū)中標(biāo)簽內(nèi)容在何處對齊。默認情況下,標(biāo)簽在其顯示區(qū)內(nèi)垂直居中對齊。默認情況下,只顯示文本的標(biāo)簽是開始邊對齊;而只顯示圖像的標(biāo)簽則水平居中對齊。
JTextField?–一個輕量級組件,它允許編輯單行文本。
JPasswordField?– 允許我們輸入了一行字像輸入框,但隱藏星號(*) 或點創(chuàng)建密碼(密碼)
JButton?– JButton 類的實例。用于創(chuàng)建按鈕類似實例中的 "Login"。
對于窗口的左側(cè)部分,存在幾種可能, ?1: 可能是工具欄里的按鈕 2: 可能是選項卡 3: 一個按鈕
三種可能性我寫了三種參考代碼.(建議對問題的描述更加清晰,這樣可以得到更貼切的回答)
參考代碼一(選項卡)
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?TabbedPaneDemo?extends?JFrame?{
public?TabbedPaneDemo()?{
initMenuBar();//初始化菜單
JPanel?jp1?=?new?JPanel();
jp1.setBackground(Color.RED);
JPanel?jp2?=?new?JPanel();
jp2.setBackground(Color.BLUE);
JPanel?jp3?=?new?JPanel();
jp3.setBackground(Color.GREEN);
JTabbedPane?jtp?=?new?JTabbedPane(JTabbedPane.LEFT);//選項卡面板,選項卡標(biāo)題靠右
jtp.add("選項卡一",?jp1);
jtp.add("選項卡二",?jp2);
jtp.add("選項卡三",?jp3);
add(jtp);
setSize(300,?200);//窗口大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//點擊關(guān)閉按鈕就退出
}
private?void?initMenuBar()?{
JMenuBar?jmb?=?new?JMenuBar();
JMenu?jm1=new?JMenu("系統(tǒng)");
JMenuItem?item1=new?JMenuItem("退出");
item1.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
System.exit(0);//點擊退出?菜單項時,?結(jié)束程序
}
});
jm1.add(item1);
JMenu?jm2?=?new?JMenu("幫助");
jmb.add(jm1);
jmb.add(jm2);
setJMenuBar(jmb);//設(shè)置本窗口的菜單欄
}
public?static?void?main(String[]?args)?{
SwingUtilities.invokeLater(new?Runnable()?{
public?void?run()?{
new?TabbedPaneDemo().setVisible(true);//創(chuàng)建窗口并設(shè)置可見
}
});
}
}
參考代碼二(工具欄)
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
//?主窗口??繼承自JFrame
public?class?DemoFrame?extends?JFrame?implements?ActionListener?{
JTextPane?jtpInfo;
JPanel?jpCenter;
static?final?String[]?INFO?=?{?"星型結(jié)構(gòu)是最古老的一種連接方式。",?"環(huán)型結(jié)構(gòu)在LAN中使用較多。"?};
//?構(gòu)造器
public?DemoFrame()?{
initMenuBar();//?菜單欄的初始化
initComponent();//?組件的初始化
initToolBar();//?工具欄的初始化
initFrame();//?窗口的設(shè)置
}
private?void?initFrame()?{//?窗口的設(shè)置
setTitle("窗口標(biāo)題");
setSize(500,?420);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private?void?initComponent()?{//?組件初始化
jtpInfo?=?new?JTextPane();
jpCenter?=?new?JPanel();
jpCenter.setBackground(Color.CYAN);
jpCenter.add(new?JTextField(8));
jpCenter.add(new?JButton("確認"));
}
private?void?initToolBar()?{//?初始化工具欄
JToolBar?jtb?=?new?JToolBar("工具欄",?JToolBar.VERTICAL);
JButton?jb1?=?new?JButton("星型拓撲");
jb1.addActionListener(this);
JButton?jb2?=?new?JButton("環(huán)形拓撲");
jb2.addActionListener(this);
JButton?jb3?=?new?JButton("其他資料");
jb3.addActionListener(this);
jtb.add(jb1);
jtb.add(jb2);
jtb.add(jb3);
add(jtb,?BorderLayout.WEST);
}
//?初始化菜單欄,并添加事件響應(yīng)機制
private?void?initMenuBar()?{
JMenuBar?jmb?=?new?JMenuBar();
JMenu?jm1?=?new?JMenu("系統(tǒng)");
JMenuItem?item1?=?new?JMenuItem("新建");
item1.addActionListener(this);//?給菜單項要添加Action事件的響應(yīng)器,本來實現(xiàn)了ActionListener接口,所以直接添加本類作為響應(yīng)器
JMenuItem?item2?=?new?JMenuItem("退出");
item2.addActionListener(this);
jm1.add(item1);
jm1.addSeparator();//?兩個菜單項中間的分割線
jm1.add(item2);
JMenu?jm2?=?new?JMenu("幫助");
//?給菜單要添加鼠標(biāo)事件響應(yīng)器
jm2.addMouseListener(new?MouseAdapter()?{
@Override
public?void?mousePressed(MouseEvent?e)?{//?(鼠標(biāo)按下時)彈出對話框
JOptionPane.showMessageDialog(null,?"版本Ver1.0\n使用說明:關(guān)于網(wǎng)絡(luò)的拓撲結(jié)構(gòu)");
;
}
});
jmb.add(jm1);
jmb.add(jm2);
setJMenuBar(jmb);//?設(shè)置窗口的菜單欄
}
//?實現(xiàn)ActionListener接口,需要重寫的方法
@Override
public?void?actionPerformed(ActionEvent?e)?{
String?cmd?=?e.getActionCommand();//?通過按鈕的Command來判斷是哪一個按鈕被點擊了
if?(cmd.equals("新建"))?{
JOptionPane.showMessageDialog(null,?"新建菜單項被點擊了");
//?do?something
}?else?if?(cmd.equals("退出"))?{
System.exit(0);
}?else?if?(cmd.equals("星型拓撲"))?{
remove(jpCenter);//?刪除組件
add(jtpInfo);//?添加文本組件
jtpInfo.setText(INFO[0]);//?設(shè)置文字
SwingUtilities.updateComponentTreeUI(this);//?刷新
}?else?if?(cmd.equals("環(huán)形拓撲"))?{
remove(jpCenter);
add(jtpInfo);
jtpInfo.setText(INFO[1]);
SwingUtilities.updateComponentTreeUI(this);
}?else?if?(cmd.equals("其他資料"))?{
remove(jtpInfo);
add(jpCenter);
SwingUtilities.updateComponentTreeUI(this);
}?else?{
System.out.println(cmd);
}
}
//?main方法,程序入口
public?static?void?main(String[]?args)?{
SwingUtilities.invokeLater(new?Runnable()?{
public?void?run()?{
new?DemoFrame().setVisible(true);
}
});
}
}
參考代碼三
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?SimpleDemo?extends?JFrame?implements?ActionListener{
JPanel?jp1;
public?SimpleDemo()?{
initMenuBar();
JPanel?jpWest?=?new?JPanel();
JButton?jb?=?new?JButton("拓撲");
jb.addActionListener(this);
jpWest.add(jb);
jp1?=?new?JPanel();
jp1.setBackground(Color.RED);
jp1.setVisible(false);
add(jp1);
add(jpWest,?BorderLayout.WEST);
setSize(300,?200);//?窗口大小
setLocationRelativeTo(null);//?居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//?點擊關(guān)閉按鈕就退出
}
private?void?initMenuBar()?{
JMenuBar?jmb?=?new?JMenuBar();
JMenu?jm1?=?new?JMenu("系統(tǒng)");
JMenuItem?item1?=?new?JMenuItem("退出");
item1.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
System.exit(0);//?點擊退出?菜單項時,?結(jié)束程序
}
});
jm1.add(item1);
JMenu?jm2?=?new?JMenu("幫助");
jmb.add(jm1);
jmb.add(jm2);
setJMenuBar(jmb);//?設(shè)置本窗口的菜單欄
}
public?static?void?main(String[]?args)?{
SwingUtilities.invokeLater(new?Runnable()?{
public?void?run()?{
new?SimpleDemo().setVisible(true);//?創(chuàng)建窗口并設(shè)置可見
}
});
}
@Override
public?void?actionPerformed(ActionEvent?e)?{
jp1.setVisible(!jp1.isVisible());
}
}
import?java.awt.*;
import?java.awt.event.*;
import?java.io.*;
import?javax.swing.*;
public?class?ReadBook?extends?JFrame?{
JTextArea?jta;
JTextField?jtf;
JButton?jb;
public?ReadBook()?{
jta?=?new?JTextArea();
jtf?=?new?JTextField(30);
jtf.setText("文件保存路徑如c:\\ab.txt");
jb?=?new?JButton("保存文字");
JPanel?jp?=?new?JPanel();
jp.add(jtf);
jp.add(jb);
add(jta);
add(jp,?BorderLayout.SOUTH);
setBounds(500,?100,?500,?380);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
jb.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
//-------------核心代碼---------
String?path?=?jtf.getText();
File?f?=?new?File(path);
String?txt?=?jta.getText().replaceAll("\n",?"\r\n");
try?{
BufferedWriter?bw?=?new?BufferedWriter(new?FileWriter(f));
bw.write(txt);//寫入文件中
bw.close();
}?catch?(Exception?e1)?{
e1.printStackTrace();
}
//-------------核心代碼---------
}
});
}
public?static?void?main(String[]?args)?{
new?ReadBook();
}
}
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class Login {
private JFrame frame = new JFrame("登錄");
private Container c = frame.getContentPane();
private JTextField username = new JTextField();
private JPasswordField password = new JPasswordField();
private JButton ok = new JButton("確定");
private JButton cancel = new JButton("取消");
public Login(){
frame.setSize(300,200);
c.setLayout(new BorderLayout());
initFrame();
frame.setVisible(true);
}
private void initFrame() {
//頂部
JPanel titlePanel = new JPanel();
titlePanel.setLayout(new FlowLayout());
titlePanel.add(new JLabel("系統(tǒng)管理員登錄"));
c.add(titlePanel,"North");
//中部表單
JPanel fieldPanel = new JPanel();
fieldPanel.setLayout(null);
JLabel l1 = new JLabel("用戶名:");
l1.setBounds(50, 20, 50, 20);
JLabel l2 = new JLabel("密 碼:");
l2.setBounds(50, 60, 50, 20);
fieldPanel.add(l1);
fieldPanel.add(l2);
username.setBounds(110,20,120,20);
password.setBounds(110,60,120,20);
fieldPanel.add(username);
fieldPanel.add(password);
c.add(fieldPanel,"Center");
//底部按鈕
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
buttonPanel.add(ok);
buttonPanel.add(cancel);
c.add(buttonPanel,"South");
}
public static void main(String[] args){
new Login();
}
}
一: 首先弄清題目的意思
A.需要的主要組件列表:
1. ?創(chuàng)建一個窗口,窗口標(biāo)題叫Information
2. ?3個標(biāo)簽, 用于顯示文字 Name Number Class
3. ?3個文本框, 用于填寫信息
4. ?1個按鈕, ?文字是確認
5. ?1個文本域
B.業(yè)務(wù)邏輯
1. 當(dāng)點擊按鈕確認的時候, 把 文本框的信息顯示到文本域
C.設(shè)計的主要技術(shù)
JLabel , JButton, JTextField ...等, 都是swing的組件 , ?所以應(yīng)該使用swing進行創(chuàng)建
二: ?確定使用的布局
swing雖然重寫了大部分的組件, 但是布局, 依舊沿襲awt技術(shù)
分析圖片上的布局:
至少有2種方法可以實現(xiàn),?
方法一: 絕對布局 , 優(yōu)點: ?配合可視化GUI拖曳, 可以完美的實現(xiàn)圖上的組件的位置
但是缺點也是致命的, 不同的操作系統(tǒng)平臺下, 可能會出現(xiàn)位置的移動,
只適合開發(fā)平臺, 移植效果差 . ?所以不推薦使用
方法二: 靈活的表格布局, 配合流式布局 , 所有操作系統(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)閉時退出虛擬機
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("確認");
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)?{//點擊按鈕,顯示信息到文本域
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è)置為可見
}
}
五: 拓展
雖然圖形界面的實現(xiàn)方法是多樣的, ?我們一定要根據(jù)具體情況, 選擇一個比較優(yōu)化的 合理的, 符合業(yè)務(wù)邏輯的實現(xiàn)方法
本文題目:java設(shè)計界面代碼,java編寫界面的代碼
文章URL:http://chinadenli.net/article6/hdopog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站營銷、網(wǎng)站設(shè)計公司、微信公眾號、定制開發(fā)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)