Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 BorderFactory를 사용하여 다른 테두리를 어떻게 구현할 수 있습니까?

<시간/>

보더팩토리 공장입니다. Java에서 다양한 유형의 테두리를 제공하는 클래스입니다.

테두리 유형

  • 베벨 테두리 :이 테두리는 올림을 그립니다. 또는 낮음 비스듬한 가장자리.
  • 빈 테두리 :그림을 그리지 않지만 공간을 차지합니다.
  • EtchedBorder :A 낮아진 에칭 테두리 직사각형 모양과 돌출된 에칭 테두리 제공 화면의 표면처럼 보입니다.
  • 선 테두리 :구성 요소 주위에 간단한 사각형을 그립니다. LineBorder 에서 선의 색상과 너비를 지정할 수 있습니다. 생성자.
  • 무광 테두리 :MatteBorder 를 만들 수 있습니다. 특정 색상으로 왼쪽 테두리 크기 지정 , 위쪽, 오른쪽 및 아래쪽 구성 요소의. 무광 테두리 또한 테두리를 그리는 데 사용할 아이콘을 전달할 수 있습니다. 이것은 이미지(ImageIcon) 또는 아이콘 의 다른 구현일 수 있습니다. 인터페이스.
  • 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;
   }
}

출력

Java에서 BorderFactory를 사용하여 다른 테두리를 어떻게 구현할 수 있습니까?