iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
Software Development

大學耍廢的我要學Java翻身系列 第 17

Day17: Java的視窗--Swing基礎介紹

  • 分享至 

  • xImage
  •  

Swing vs Awt

Awt(Abstract Window Toolkit)

是Java建立視窗的套件,有圖形和使用者介面工具包,但是沒有彈性而且缺乏效率,而且是用C語言寫出來的,所以如果要跨平台又要重寫程式,耗時又耗資源

Swing

SWing是用Java撰寫的,和Java的特性一樣可以跨平台,他也有Awt的功能,Swing也是JFC(Java Foundation Classes),JFC是由適合開發圖形化介面的一組類別組成的,Swing有以下的特點

  1. 元件在執行階段可以換外觀,或重新時座外觀
  2. 可以用滑鼠拖放
  3. 元件容易延伸,創作出自訂元件
  4. 支援特定除錯,並提供慢動作執行
    在寫Swing時需要使用一個最上層的容器類別(ex:JFrame, JDialog, JWindow)當作容器類別架構的根類別,才能在螢幕上顯示

JFrame類別

建構式

public JFrame() => 建立沒有標題的JFrame視窗
public JFrame() => 建立沒有標題的JFrame視窗

常用方法

public Container getContentPane() => 取得Container容器元件
public void setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
=> 設定視窗有預設關閉的動作就是設定我們按下視窗的x就會關閉視窗
程式範例
public void setVisible(boolean b) => 設定視窗是否顯示

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

public class Main extends JPanel{

    @Override
    // Java calls the paintComponent method whem it need to.
    public void paintComponent(Graphics g){
        int width = getWidth();  // 取得視窗當前寬度
        int height = getHeight();  // 取得當前視窗高度
        g.setColor(Color.PINK);  // 設定顏色:PINK粉色
        g.fillRect(0, 0, width, height);  // 畫填滿設定顏色的長方形, 起點在(0,0)
                                          // x軸延伸width長, y軸延伸height長
        g.setColor(Color.red);
        g.drawString("Hello Java", 100, 100);  // 寫字(Hello Java), 
                                               // 設定起點在(100,100)
        g.setColor(Color.yellow);
        g.drawLine(0, 0, 50, 50);  // 畫線(起點在(0,0)終點在(50,50))
        g.setColor(Color.CYAN);
        g.drawRect(80, 80, 100,30);  // 畫方形框 起點在(80,80)寬100高30
        g.setColor(Color.ORANGE);
        g.fillRect(100, 100, 60, 5);
        g.setColor(Color.GREEN);
        g.fillOval(200, 200, 100, 50); // 畫填滿設定顏色的橢圓 
                                       // 起點在(200,200)橫軸100直軸50
        ImageIcon img = new ImageIcon("images.jpg");
        img.paintIcon(null, g, 50, 50);  // 放上照片(images.jpg)起點在(50,50)
    }

    public static void main(String[] args) {
        JFrame window = new JFrame();  // 建立名為window的JFrame物件
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(300, 300); // 設定視窗大小
        window.setContentPane(new Main());  //可以讓paintComponent裡面畫的東西
                                            // 顯示在window裡面
        window.setVisible(true);  // 設定顯示視窗
    }
}

上一篇
Day16: Java的多main宇宙(下)
下一篇
Day18: JFrame教學
系列文
大學耍廢的我要學Java翻身30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言