Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào chúng ta có thể triển khai các đường viền khác nhau bằng BorderFactory trong Java?

BorderFactory là một Nhà máy lớp cung cấp các loại đường viền khác nhau trong Java.

Các loại đường viền

  • BevelBorder :Đường viền này vẽ nâng lên hoặc hạ xuống các cạnh vát.
  • EmptyBorder :Nó không vẽ được nhưng chiếm dung lượng.
  • EtchedBorder :Đường viền khắc được hạ thấp tạo ra một hình chữ nhật và một đường viền khắc Nâng cao trông giống như một bề mặt của màn hình.
  • LineBorder :Vẽ một hình chữ nhật đơn giản xung quanh một thành phần. Chúng tôi có thể chỉ định màu và độ rộng của đường trong LineBorder phương thức khởi tạo.
  • MatteBorder :Chúng tôi có thể tạo MatteBorder với một màu nhất định và chỉ định kích thước của đường viền ở bên trái , trên cùng, bên phải và dưới cùng của thành phần. A MatteBorder cũng cho phép chúng tôi chuyển một Biểu tượng sẽ được sử dụng để vẽ đường viền. Đây có thể là một hình ảnh (ImageIcon) hoặc bất kỳ cách triển khai nào khác của Biểu tượng giao diện.
  • TitledBorder :Đường viền thông thường với tiêu đề. A TitledBorder không thực sự vẽ đường viền; nó chỉ vẽ một tiêu đề kết hợp với một đối tượng đường viền khác. Kiểu đường viền này đặc biệt hữu ích để nhóm các bộ điều khiển khác nhau trong một giao diện phức tạp.
  • Đường viền Thành phần: Một đường viền chứa hai đường viền khác. Điều này đặc biệt hữu ích nếu chúng ta muốn đặt một thành phần trong EmptyBorder và sau đó đặt một thứ gì đó trang trí xung quanh nó, chẳng hạn 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;
   }
}

Đầu ra

Làm cách nào chúng ta có thể triển khai các đường viền khác nhau bằng BorderFactory trong Java?