Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีทำเส้นขอบต่างๆ ด้วย BorderFactory ใน Java

BorderFactory เป็นคลาส Factory ที่ให้เส้นขอบหลายประเภทใน Java

ประเภทของเส้นขอบ (Borders)

  • BevelBorder: วาดขอบ โค้งขึ้น (raised) หรือ โค้งลง (lowered)
  • EmptyBorder: ไม่วาดอะไร แต่ใช้พื้นที่
  • EtchedBorder: Lowered ให้ลักษณะสี่เหลี่ยม Raised ดูเหมือนผิวหน้าจอ
  • LineBorder: วาดสี่เหลี่ยมธรรมดารอบคอมโพเนนต์ ระบุสีและความหนาได้ใน Constructor
  • MatteBorder: สร้างขอบสีเฉพาะ ระบุขนาดขอบ ซ้าย, บน, ขวา, ล่าง ได้ ใช้ Icon วาดขอบได้ (รูปภาพหรือ Icon อื่นๆ)
  • TitledBorder: ขอบธรรมดา มีชื่อเรื่อง ไม่ได้วาดขอบจริง แค่วาดชื่อร่วมกับ Border อื่น เหมาะสำหรับจัดกลุ่มคอนโทรลใน UI ซับซ้อน
  • Compound Border: ขอบที่มี 2 ขอบรวมกัน เหมาะถ้าต้องการ EmptyBorder แล้วค่อยใส่ EtchedBorder หรือ MatteBorder รอบนอก

ตัวอย่างโค้ด

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

public class BorderFactoryMain {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(run);
    }

    static Runnable run = new Runnable() {
        @Override
        public void run() {
            BorderFactoryTest test;
            test = new BorderFactoryTest();
            test.setVisible(true);
        }
    };

    public static class BorderFactoryTest extends JFrame {
        public BorderFactoryTest() {
            setTitle("BorderFactory Test");
            setSize(350, 400);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLayout(new FlowLayout());
            add(createBorderedPanel(BorderFactory.createRaisedBevelBorder(), "createRaisedBevelBorder()"));
            add(createBorderedPanel(BorderFactory.createBevelBorder(BevelBorder.LOWERED), "createBevelBorder(BevelBorder.LOWERED)"));
            add(createBorderedPanel(BorderFactory.createBevelBorder(BevelBorder.RAISED), "createBevelBorder(BevelBorder.RAISED)"));
            add(createBorderedPanel(BorderFactory.createCompoundBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED), BorderFactory.createBevelBorder(BevelBorder.LOWERED)), "createCompoundBorder(RAISED, LOWERED)"));
            add(createBorderedPanel(BorderFactory.createEtchedBorder(), "createEtchedBorder()"));
            add(createBorderedPanel(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "createEtchedBorder(EtchedBorder.LOWERED)"));
            add(createBorderedPanel(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), "createEtchedBorder(EtchedBorder.RAISED)"));
            add(createBorderedPanel(BorderFactory.createEtchedBorder(Color.lightGray, Color.yellow), "createEtchedBorder(Color.lightGray, Color.yellow)"));
            add(createBorderedPanel(BorderFactory.createLineBorder(Color.red), "createLineBorder(Color.red)"));
            add(createBorderedPanel(BorderFactory.createLineBorder(Color.blue, 5), "createLineBorder(Color.blue, 5)"));
            add(createBorderedPanel(BorderFactory.createDashedBorder(null), "createDashedBorder(null)"));
            setLocationRelativeTo(null);
        }
    }

    private static JPanel createBorderedPanel(Border b, String name) {
        JLabel label = new JLabel(name);
        JPanel panel = new JPanel();
        panel.setBorder(b);
        panel.add(label);
        return panel;
    }
}

ผลลัพธ์

วิธีทำเส้นขอบต่างๆ ด้วย BorderFactory ใน Java