Swing-setBorder()用法-入門


注:本文內容轉自:Swing編程邊框(Border)的用法總結。內容根據筆者理解稍有整理。

函數說明:

public void setBorder(Border border)

設置此組件的邊框。Border 對象負責定義組件的 insets(直接對組件重寫所有 insets 設置),並且可選地呈現這些 insets 范圍內的邊框裝飾。要為 swing 組件創建有裝飾的和無裝飾的區域(例如邊距和填充),應該使用邊框(而不是 insets)。在單個組件中可使用復合邊框來嵌套多個邊框。 雖然從技術上講可以在繼承自 JComponent 的所有對象上設置邊框,但是很多標准 Swing 組件的外觀實現無法正常地使用用戶設置的邊框。通常,如果希望在標准的 Swing 組件而不是 JPanel 或 JLabel 上設置邊框時,建議將組件放入 JPanel 中,並在 JPanel 上設置邊框。

Border對象的定義主要通過BorderFactory進行,這也是本文討論的重點,根據API的解釋:BorderFactory提供標准Border對象的工廠類。在任何可能的地方,此工廠類都將提供對已共享Border實例的引用。下面討論具體的應用方法:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;


public class setBorderDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(0, 2, 5, 10));
        panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

        JButton p1 = new JButton();
        p1.setBorder(BorderFactory.createLineBorder(Color.red, 3));
        p1.add(new JLabel("線邊框"));
        panel.add(p1);

        JPanel p2 = new JPanel();
        p2.setBorder(BorderFactory.createEtchedBorder());
        p2.add(new JLabel("蝕刻邊框"));
        panel.add(p2);

        JPanel p3 = new JPanel();
        p3.setBorder(BorderFactory.createRaisedBevelBorder());
        p3.add(new JLabel("斜面邊框(凸)"));
        panel.add(p3);

        JPanel p4 = new JPanel();
        p4.setBorder(BorderFactory.createLoweredBevelBorder());
        p4.add(new JLabel("斜面邊框(凹)"));
        panel.add(p4);

        JPanel p5 = new JPanel();
        p5.setBorder(BorderFactory.createTitledBorder("標題"));
        p5.add(new JLabel("標題邊框"));
        panel.add(p5);

        JPanel p6 = new JPanel();
        TitledBorder tb = BorderFactory.createTitledBorder("標題");
        tb.setTitleJustification(TitledBorder.RIGHT);
        p6.setBorder(tb);
        p6.add(new JLabel("標簽邊框(右)"));
        panel.add(p6);

        JPanel p7 = new JPanel();
        p7.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.yellow));
        p7.add(new JLabel("花色邊框"));
        panel.add(p7);

        JPanel p8 = new JPanel();
        Border b1 = BorderFactory.createLineBorder(Color.blue, 2);
        Border b2 = BorderFactory.createEtchedBorder();
        p8.setBorder(BorderFactory.createCompoundBorder(b1, b2));
        p8.add(new JLabel("組合邊框"));
        panel.add(p8);
        
        JFrame frame = new JFrame("Swing邊框演示");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
    }
}

 

運行效果如下圖所示:

運行效果圖

需注意的是,panel與frame之間其實是有一個寬度為5像素的emptyBorder,它只占空間而不顯示。


免責聲明!

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



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