如何在 Java 中使用 BorderFactory 實現不同的邊框?\n
BorderFactory 是一個工廠類,它提供了 Java 中不同型別的邊框。
邊框型別
- BevelBorder:此邊框繪製凸起或凹陷的斜角邊緣。
- EmptyBorder:它不進行任何繪製,但會佔用空間。
- EtchedBorder:一個凹陷的蝕刻邊框 呈現矩形外觀,而一個凸起的蝕刻邊框 看起來像螢幕的表面。
- LineBorder:在元件周圍繪製一個簡單的矩形。我們可以在LineBorder建構函式中指定線條的顏色和寬度。
- MatteBorder:我們可以建立一個具有特定顏色並指定元件左側、頂部、右側和底部邊框大小的MatteBorder。MatteBorder還允許我們傳遞一個用於繪製邊框的圖示。這可以是影像(ImageIcon)或Icon介面的任何其他實現。
- TitledBorder:帶標題的常規邊框。TitledBorder實際上並不繪製邊框;它只是與另一個邊框物件一起繪製標題。這種邊框型別對於在複雜的介面中對不同的控制元件集進行分組特別有用。
- 元件邊框:包含兩個其他邊框的邊框。如果我們想將元件包含在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; } }
輸出
廣告