BorderFactory là lớp Factory cung cấp các loại viền khác nhau trong Java.
Các loại Border
- BevelBorder: Vẽ cạnh nổi hoặc chìm (raised/lowered).
- EmptyBorder: Không vẽ gì nhưng chiếm diện tích.
- EtchedBorder: Viền chìm (Lowered) như hình chữ nhật, viền nổi (Raised) như bề mặt màn hình.
- LineBorder: Vẽ hình chữ nhật đơn giản quanh component. Chỉ định màu và độ dày trong constructor.
- MatteBorder: Tạo viền với màu nhất định, chỉ định kích thước viền trái, trên, phải, dưới. Cũng cho phép truyền Icon để vẽ viền (ImageIcon hoặc implement Icon).
- TitledBorder: Viền thường có tiêu đề. Không vẽ viền thực sự, chỉ vẽ tiêu đề kết hợp với border object khác. Hữu ích nhóm control trong giao diện phức tạp.
- Compound Border: Viền chứa 2 viền khác. Hữu ích nếu muốn bao component trong EmptyBorder rồi thêm viền trang trí như EtchedBorder hoặc MatteBorder.
Ví dụ
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;
}
}
Kết quả
