java筆記之圖形類詳解


軟件的交互方式:
1. 控制台的交互方式、
2. 圖形化界面的交互方式 。

java使用到的圖形類主要在java.awt 與javax.swing包中。

java.awt 與 javax.swing包的區別:
java.awt中使用的圖形類都是依賴於系統 的圖形庫的。
javax.swing包使用到的圖形類都是sun自己實現,不需要依賴系統的圖形庫。
疑問: 既然swing包中的圖形類已經取代awt包的圖形類,為什么不刪除awt呢?

1、swing比awt包出現的晚,所以會存在一些界面是用了awt包的相關類和方法,刪除會帶來影響。 
2、awt包中不僅含有圖像類,還有其它的類和方法。二者僅僅是在圖形類上有很高的相似度,而其它則並不是這樣。

在java中所有的圖形類都被稱作組件類。

組件的類別:
----------| 容器組件
----------| 非容器組件

 

public class Demo1 {

    public static void main(String[] args) {
        JFrame frame = new JFrame("這個是我第一個圖形化界面的例子");
        //設置窗體的大小
//        frame.setSize(300,400);
        //設置窗體(左上角)出現的位置
        //frame.setBounds((1366-300)/2, (768-400)/2, 300,400); // 第一個參數是左上角的x軸坐標, 第二參數是左上角y的坐標。 第三個窗體寬, 第四窗體的高。
        initFrame(frame, 300,400);
        frame.setVisible(true); //setVisible 設置窗體的可見性。
        //設置窗體關閉事件
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    }
    
    
    //獲取屏幕的分辨率   設置窗體在屏幕的居中位置。
    public static void initFrame(JFrame frame,int width , int height){
        Toolkit toolkit = Toolkit.getDefaultToolkit(); //獲取一個與系統相關工具類對象
        //獲取屏幕的分辨率
        Dimension d = toolkit.getScreenSize();
        int x = (int) d.getWidth();
        int y = (int) d.getHeight();
        frame.setBounds((x-width)/2, (y-height)/2, width, height);
        
    }
    
    
    
}

JOptionPane(對話框)
消息對話框
警告對話框
錯誤對話框
輸入對話框
確認對話框

此處用上班遲到扣錢為例

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Demo02 {
    public static void main(String[] args) {
        JFrame frame=new JFrame("窗體");
        Demo01.initJframe(frame, 400, 500);
        JOptionPane.showMessageDialog(frame, "明天停電,不用上班", "通知", JOptionPane.INFORMATION_MESSAGE);
        JOptionPane.showMessageDialog(frame,"上班遲到2次,遲到次數用完了。","警告",JOptionPane.WARNING_MESSAGE);
        JOptionPane.showMessageDialog(frame, "遲到3次了,罰50元","處分", JOptionPane.ERROR_MESSAGE);
        JOptionPane.showInputDialog("請輸入你要給我的金額($)");
        JOptionPane.showConfirmDialog(frame, "你確認要交嗎?");
    }
}

效果展示:

 

文件對話框(FileDialog):
FileDialog(Dialog parent, String title, int mode)
parent: 對話框的所有者
tiltle : 對話框的標題
mode: load(打開) 、 save(保存)

public class Demo3 {

    public static void main(String[] args) {
        JFrame frame = new JFrame("窗體");
        //創建一個文件對話框(初始也是不可見)
        //FileDialog fileDialog = new FileDialog(frame, "請選擇打開的文件", FileDialog.LOAD);
        FileDialog fileDialog = new FileDialog(frame,"請選擇保存的路徑",FileDialog.SAVE);
        FrameUtil.initFrame(frame, 300,400);
        fileDialog.setVisible(true);
        System.out.println("文件所在的目錄:"+ fileDialog.getDirectory());
        System.out.println("文件名:"+ fileDialog.getFile());
        
        
        
    }
    
}

布局管理器:布局管理就是用於指定組件的 擺放位置的。
每種布局管理器都有自己的擺放風格
BorderLayout(邊框布局管理器)

擺放的風格: 上北 、 下南 、 左西、 右東 , 中

Borderlayout 要注意的事項:
1. 使用Borderlayout添加組件的時候,如果沒有指定組件的方位,那么默認添加到中間的位置上。
2. 使用BorderLayout的時候,如果東南西北那個方向沒有對應 的組件,那么中間位置的組件就會占據其空缺的位置。
3. 窗體默認的布局管理器就是Borderlayout.

public class Demo1 {

    public static void main(String[] args) {
        JFrame frame = new JFrame("邊框局部管理器");
        //創建一個邊框布局管理器
        BorderLayout borderLayout = new BorderLayout();
        //讓borderlayout管理frame窗體。
        frame.setLayout(borderLayout);
        
        frame.add(new JButton(""),BorderLayout.NORTH);
        frame.add(new JButton(""),BorderLayout.SOUTH);
        frame.add(new JButton("西"),BorderLayout.WEST);
        frame.add(new JButton(""),BorderLayout.EAST);
        frame.add(new JButton(""),BorderLayout.CENTER);
        //初始化窗體
        FrameUtil.initFrame(frame, 300, 300);
    }
    
}

流式布局管理器(FlowLayout)

流式布局管理器要注意的事項:
1. 流式布局管理器默認情況是居中對齊的。
2. panel默認的局部管理器就是FlowLayout.

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Demo04 {
        public static void main(String[] args) {
            JFrame frame = new JFrame("窗體");
            //創建面板
            JPanel panel = new JPanel();
            frame.add(panel);
            //創建一個流式布局管理器
            FlowLayout flowLayout = new FlowLayout(FlowLayout.LEFT, 0, 30);// FlowLayout.LEFT 指定對齊的方式。
            //讓流式布局管理器管理frame窗體
            panel.setLayout(flowLayout);
            
            panel.add(new JButton("按鈕1"));
            panel.add(new JButton("按鈕2"));
            panel.add(new JButton("按鈕3"));
            panel.add(new JButton("按鈕4"));
            
            //初始化窗體
            
            Demo01.initJframe(frame,300, 400);
            
            
        }
}

表格布局管理器(GridLayout)
注意的事項: 如果表格數量不夠使用時,默認會多加一列。

import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Demo04 {
        public static void main(String[] args) {
            JFrame frame = new JFrame("計算器");
            //創建表格布局管理器
            GridLayout gridLayout = new GridLayout(4, 4, 1, 2);
            //讓窗體交給表格布局管理器管理
            frame.setLayout(gridLayout);
            for(int i = 0 ; i<10; i++){
                frame.add(new JButton(i+""));
            }
            frame.add(new JButton("+"));
            frame.add(new JButton("-"));
            frame.add(new JButton("*"));
            frame.add(new JButton("/"));
            frame.add(new JButton("="));
            frame.add(new JButton("."));
            
            Demo01.initJframe(frame,300, 400);
            
            
        }
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM