首頁 > 軟體

Java程式圖形化使用者介面設計之按鈕與佈局

2022-02-08 19:00:40

Java程式設計 圖形化使用者介面【四】

按鈕元件 JButton

JButton元件表示一個普通的按鈕

JButton類常用方法

方法作用
public JButton() throws HeadlessException建立一個Button物件
public JButton(String label) throws HeadlessException建立一個Button物件,同時指定其顯示內容
public JButton(Icon icon)建立一個帶圖片的按鈕
public JButton(String text,Icon icon)建立一個帶圖片和文字的按鈕
public void setLabel(String label)設定Button的顯示內容
public String getLabel()得到Button的顯示內容
public void setBounds(int x,int y,int width,int height)設定元件的大小及顯示方式
public void setMnemonic(int mnemonic)設定按鈕的快捷鍵

演示

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

public class Hello {
    public static void main(String[] args) {
        JFrame frame = new JFrame("一");
        JButton but = new JButton("點選");
        Font font = new Font("Serief",Font.BOLD,25);
        but.setFont(font);
        frame.add(but);
        frame.setSize(200,70);
        frame.setLocation(500,300);
        frame.setVisible(true);
    }
}

按鈕上顯示圖片

import javax.swing.*;

public class Hello {
    public static void main(String[] args) {
        JFrame frame = new JFrame("一");
        String Path="C:\Users\30452\Desktop\123.jpg";
        Icon icon = new ImageIcon(Path,"MLDN");
        JButton but = new JButton(icon);
        frame.add(but);
        frame.setSize(500,600);
        frame.setLocation(300,200);
        frame.setVisible(true);
    }
}

佈局管理器

在Swing中主要使用以下5種常見的佈局管理器:FlowLayout、BorderLayout、GridLayout、CardLayout、絕對定位。

FlowLayout

流式佈局管理器,使用此種佈局方式會使所有的元件像流水一樣依次進行排列

常數作用
public static final int CENTER居中對齊
public static final int LEADING與容器的開始端對齊方式一樣
public static final int LEFT左對齊
public static final int RIGHT右對齊
public static final int TRAILING與容器的結束端對齊方式一樣
方法作用
public FlowLayout()構造一個新的FlowLayout,居中對齊
public FlowLayout(int align)構造一個FlowLayout,並指定對齊方式
public FlowLayout(int align,int hgap,int vgap)指定對齊方式、水平、垂直間距

演示:

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

public class Hello {
    public static void main(String[] args) {
        JFrame frame = new JFrame("一");
        frame.setLayout(new FlowLayout(FlowLayout.CENTER,4,4));
        JButton but = null;
        for(int i=0;i<16;i++){
            but = new JButton("按鈕");
            frame.add(but);
        }
        frame.setSize(300,300);
        frame.setVisible(true);
    }
}

BorderLayout

BorderLayout將一個表單的版面劃分成東、西、南、北、中5個區域

常數作用
public static final String EAST將元件設定在東區
public static final String WEST將元件設定在西區
public static final String SOUTH將元件設定在南區
public static final String NORTH將元件設定在北區
public static final String CENTER將元件設定在中區
方法作用
public BorderLayout()構造沒有間距的佈局器
public BorderLayout(int hgap,int vgap)構造有水平和垂直間距的佈局器

演示:

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

public class Hello {
    public static void main(String[] args) {
        JFrame frame = new JFrame("一");
        frame.setLayout(new BorderLayout(3,3));
        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);
        frame.pack();
        frame.setVisible(true);
    }
}

GridLayout

GridLayout佈局管理器是以表格的形式進行管理

方法作用
public GridLayout(int rows,int cols)構造一個指定行和列的佈局管理器
public GridLayout(int rows,int cols,int hgap,int vgap)構造時指定行和列、水平和垂直間距

演示:

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

public class Hello {
    public static void main(String[] args) {
        JFrame frame = new JFrame("一");
        frame.setLayout(new GridLayout(3,5,3,3));
        JButton but = null;
        for(int i=0;i<15;i++){
            but = new JButton("按鈕");
            frame.add(but);
        }
        frame.pack();
        frame.setVisible(true);
    }
}

CardLayout

CardLayout就是將一組元件彼此重疊地進行佈局,就像一張張卡片一樣,這樣每次只會展現一個介面

方法作用
public CardLayout()構造CardLayout物件,各元件間距為0
public CardLayout(int hgap,int vgap)構造CardLayout物件,指定元件間距
public void next(Container parent)翻轉到下一張卡片
public void previous(Container parent)翻轉到上一張卡片
public void first(Container parent)翻轉到第一張卡片
public void last(Container parent)翻轉到最後一張卡片
public void show(Container parent,String name)顯示具有指定元件名稱的卡片
import javax.swing.*;
import java.awt.*;

public class Hello {
    public static void main(String[] args) {
        JFrame frame = new JFrame("一");
//        取得表單容器
        Container cont = frame.getContentPane();
        CardLayout card = new CardLayout();
        frame.setLayout(card);
        cont.add(new JLabel("A",JLabel.CENTER),"first");
        cont.add(new JLabel("B",JLabel.CENTER),"second");
        cont.add(new JLabel("C",JLabel.CENTER),"third");
        cont.add(new JLabel("D",JLabel.CENTER),"fourth");
        cont.add(new JLabel("E",JLabel.CENTER),"fifth");
        frame.pack();
        frame.setVisible(true);
        card.show(cont,"third");
        for(int i=0;i<5;i++){
            try {
                Thread.sleep(3000);
            }catch (InterruptedException e){
            }
            card.next(cont);
        }
    }
}


絕對定位

Component中提供了setBounds()方法,可以定位一個元件的座標,使用X、Y的座標表示方式

public void setBounds(int x,int y,int width,int height)

演示:

import javax.swing.*;
import javax.swing.plaf.ButtonUI;

public class Hello {
    public static void main(String[] args) {
        JFrame frame = new JFrame("一");
        frame.setLayout(null);
        JLabel title = new JLabel("確定要退出嗎?");
        JButton a = new JButton("確定");
        JButton b = new JButton("取消");
        frame.setSize(200,90);
        title.setBounds(45,5,150,20);
        a.setBounds(10,30,80,20);
        b.setBounds(100,30,80,20);
        frame.add(title);
        frame.add(a);
        frame.add(b);
        frame.setVisible(true);
    }
}

到此這篇關於Java程式圖形化使用者介面設計之按鈕與佈局的文章就介紹到這了,更多相關Java 圖形介面按鈕內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com