程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Swing入門——簡單了解+demo(一),swing入門了解demo

Swing入門——簡單了解+demo(一),swing入門了解demo

編輯:JAVA綜合教程

Swing入門——簡單了解+demo(一),swing入門了解demo


  工作以來,一直都是基於java web方向的開發,並沒有java方向GUI相關的開發經驗,不過好在之前用過winform開發。有了基礎的套路,想來搞一下Swing也沒有什麼壓力!到網上搜了一下相關的學習資料,有拖拖拽拽的控件,也有代碼實現的。為了加深印象和理解,直接搞代碼吧~

  參考了網上的相關博客,先有一個大體的了解,比如:http://www.blogjava.net/jerry-zhaoj/articles/283170.html

  選擇了一個PDF作為學習的參考:Java Swing圖形界面開發與案例詳解 .王鵬等.掃描版.pdf

學習Swing之前,先來了解一下AWT:

  AWT(Abstract Windows Toolkit):抽象窗口工具集,提供了與本地圖形化界面交互的接口,底層調用本地操作系統。由於實現依賴於本地操作系統,所以是重量級組件,Swing則是在實現AWT的基礎上做擴展的,組件是以純java的方式來實現的,不依賴於底層的操作系統,所以是輕量級組件。AWT設計的初衷是開發小的應用程序的圖形界面,而非專門用於用戶界面(UI)的工具包而設計,所以做UI有些欠缺,比如剪切板、彈出菜單、滾動等功能都不支持。

  接著照著第一章的例子做了3個demo,demo中不用關心具體的代碼細節,先看大體的框架即可。

  demo1:登錄窗口

  demo2:菜單欄、工具欄

  demo3:tab頁簽

demo1:

package com.comall.fastsvn.test.chapter1;

import javax.swing.*;
import java.awt.*;

/**
 * 登錄界面
 */
public class SwingDemo1 extends JPanel {
    private static final int JFRAME_WIDTH = 300;
    private static final int JFRAME_HEIGHT= 150;
    private SwingDemo1(){
        //窗口-頂層面板
        JFrame jFrame = new JFrame("登錄窗口");
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //網格布局,容器中的方法
        GridBagLayout gridBagLayout = new GridBagLayout();
        setLayout(gridBagLayout);
        jFrame.add(this,BorderLayout.WEST);
        jFrame.setSize(JFRAME_WIDTH,JFRAME_HEIGHT);
        //位置:居中
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        jFrame.setLocation((int)(dimension.getWidth() - JFRAME_WIDTH ) / 2,(int)(dimension.getHeight() - JFRAME_HEIGHT ) / 2);
        //組件
        JLabel tipLabel = new JLabel("歡迎來到Java世界");
        JLabel userLabel = new  JLabel("用戶名:");
        JLabel pwdLabel = new JLabel("密碼:");
        JTextField userText = new JTextField(15);
        JTextField pwdText = new JTextField(15);
        JButton submitBtn = new JButton("登錄");
        JButton cancelBtn = new JButton("取消");
        //網格布局
        GridBagConstraints gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.fill = GridBagConstraints.NONE;
        gridBagConstraints.anchor = GridBagConstraints.EAST;
        gridBagConstraints.weightx = 3;
        gridBagConstraints.weighty = 4;
        //添加組件並指定組件的位置
        addComponent(tipLabel,gridBagConstraints,0,0,4,1);
        addComponent(userLabel,gridBagConstraints,0,1,1,1);
        addComponent(pwdLabel,gridBagConstraints,0,2,1,1);
        addComponent(userText,gridBagConstraints,2,1,1,1);
        addComponent(pwdText,gridBagConstraints,2,2,1,1);
        addComponent(submitBtn,gridBagConstraints,0,3,1,1);
        addComponent(cancelBtn,gridBagConstraints,2,3,1,1);
        //面板可見、不可編輯
        jFrame.setResizable(false);
        jFrame.setVisible(true);
    }

    /**
     * 添加組件
     * @param component             組件
     * @param gridBagConstraints
     * @param x                     行
     * @param y                     列
     * @param w                     寬
     * @param h                     高
     */
    private void addComponent(Component component,GridBagConstraints gridBagConstraints,int x,int y,int w,int h){
        gridBagConstraints.gridx = x;
        gridBagConstraints.gridy = y;
        gridBagConstraints.gridwidth = w;
        gridBagConstraints.gridheight = h;
        //Container中的方法
        add(component,gridBagConstraints);
    }

    public static void main(String[] args) {
        new SwingDemo1();
    }


}

運行效果:

demo2:

package com.comall.fastsvn.test.chapter1;

import javax.swing.*;
import java.awt.*;

/**
 * 菜單欄、工具欄
 */
public class SwingDemo2 {
    private static final int JFRAME_WIDTH = 600;
    private static final int JFRAME_HEIGHT= 400;
    public SwingDemo2(){
        //窗口-頂層面板
        JFrame jFrame = new JFrame("菜單工具欄");
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setSize(JFRAME_WIDTH,JFRAME_HEIGHT);
        //窗口內加入面板
        JPanel jPanel = new JPanel();
        jFrame.setContentPane(jPanel);

        //窗口加入菜單欄
        JMenuBar menuBar = new JMenuBar();
        jFrame.setJMenuBar(menuBar);
        //菜單欄加菜單
        JMenu menu1 = new JMenu("菜單1");
        JMenu menu2 = new JMenu("菜單2");
        menuBar.add(menu1);menuBar.add(menu2);
        //菜單加子菜單
        JMenuItem menuItem11 = new JMenuItem("子菜單11");
        JMenuItem menuItem12 = new JMenuItem("子菜單12");
        JMenuItem menuItem21 = new JMenuItem("子菜單21");
        JMenuItem menuItem22 = new JMenuItem("子菜單22");
        menu1.add(menuItem11);
        menu1.addSeparator();
        menu1.add(menuItem12);
        menu2.add(menuItem21);
        menu2.addSeparator();
        menu2.add(menuItem22);
        //面板加入工具欄
        JButton jButton1 = new JButton("工具1");
        JButton jButton2 = new JButton("工具2");
        JButton jButton3 = new JButton("工具3");
        JToolBar toolBar = new JToolBar();
        toolBar.add(jButton1);
        toolBar.add(jButton2);
        toolBar.add(jButton3);
        //布局
        BorderLayout borderLayout = new BorderLayout();
        jPanel.setLayout(borderLayout);
        jPanel.add("North",toolBar);
        //位置:居中
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        jFrame.setLocation((int)(dimension.getWidth() - JFRAME_WIDTH ) / 2,(int)(dimension.getHeight() - JFRAME_HEIGHT ) / 2);
        //面板可見、不可編輯
        jFrame.setResizable(false);
        jFrame.setVisible(true);

    }
    public static void main(String[] args) {
        new SwingDemo2();
    }
}

運行效果:

 

demo3:

package com.comall.fastsvn.test.chapter1;

import javax.swing.*;
import java.awt.*;

/**
 *
 */
public class SwingDemo3 extends JTabbedPane{
    private static final int JFRAME_WIDTH = 600;
    private static final int JFRAME_HEIGHT= 400;
    private SwingDemo3(){
        //窗口-頂層面板
        JFrame jFrame = new JFrame("tab頁簽");
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setSize(JFRAME_WIDTH,JFRAME_HEIGHT);
        jFrame.setVisible(true);
        //面板
        JPanel jPanel = new JPanel();
        jFrame.setContentPane(jPanel);
        setLayout(new BorderLayout());
        //子面板
        JPanel jPanel1 = new JPanel();
        JPanel jPanel2 = new JPanel();
        jPanel1.setLayout(new BorderLayout());
        addTab("panel1",jPanel1);
        setEnabledAt(0,true);
        setTitleAt(0,"測試頁1");
        addTab("panel2",jPanel2);
        setEnabledAt(1,true);
        setTitleAt(1,"測試頁2");
        setPreferredSize(new Dimension(500,200));
        setTabPlacement(JTabbedPane.TOP);
        setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
        jPanel.add("Center",this);
        setVisible(true);
    }
    public static void main(String[] args) {
        new SwingDemo3();
    }
}

運行效果: 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved