JButton은 AbstractButton 클래스의 하위 클래스로, Java Swing 애플리케이션에서 플랫폼에 독립적인 버튼을 추가할 때 사용됩니다.
JButton은 사용자가 버튼을 클릭하면 ActionListener 인터페이스를 통해 이벤트를 발생시키며, 마우스 조작 시에는 MouseListener, 키보드 입력 시에는 KeyListener를 통해서도 이벤트를 처리할 수 있습니다.
JButton에 테두리 설정하기
JButton에는 LineBorder, BevelBorder, EtchedBorder, EmptyBorder, TitledBorder 등 다양한 종류의 테두리를 적용할 수 있으며, 이는 JComponent 클래스의 setBorder() 메서드를 사용하여 구현합니다.
문법(Syntax)
public void setBorder(Border border)
예제 코드(Example)
아래 예제에서는 BorderFactory 클래스의 팩토리 메서드들을 활용해 7개의 버튼에 서로 다른 스타일의 테두리를 적용했습니다.
import javax.swing.*;
import java.awt.*;
public class JButtonBordersTest extends JFrame {
private JButton button[];
private JPanel panel;
public JButtonBordersTest() {
setTitle("JButton Borders");
panel = new JPanel();
panel.setLayout(new GridLayout(7, 1));
button = new JButton[7];
for(int count = 0; count < button.length; count++) {
button[count] = new JButton("Button "+(count+1));
panel.add(button[count]);
}
// 파란색 실선 테두리
button[0].setBorder(BorderFactory.createLineBorder(Color.blue));
// 돌출된 베벨 테두리
button[1].setBorder(BorderFactory.createBevelBorder(0));
// 빨강/파랑 색상이 지정된 움푹 들어간 베벨 테두리
button[2].setBorder(BorderFactory.createBevelBorder(1, Color.red, Color.blue));
// 네 가지 색상으로 구성된 베벨 테두리
button[3].setBorder(BorderFactory.createBevelBorder(1, Color.green, Color.orange, Color.red, Color.blue));
// 여백(빈) 테두리
button[4].setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
// 홈이 파인 에칭 테두리
button[5].setBorder(BorderFactory.createEtchedBorder(0));
// 제목이 포함된 테두리
button[6].setBorder(BorderFactory.createTitledBorder("Titled Border"));
add(panel, BorderLayout.CENTER);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new JButtonBordersTest();
}
}실행 결과(Output)
위 코드를 실행하면 각 버튼마다 서로 다른 테두리 스타일이 적용된 것을 확인할 수 있습니다.

정리
Swing에서는 BorderFactory 클래스가 제공하는 다양한 팩토리 메서드를 통해 별도의 커스텀 클래스 작성 없이도 손쉽게 여러 스타일의 테두리를 만들 수 있습니다. 필요에 따라 색상, 두께, 제목 등을 지정하여 UI를 더욱 직관적으로 꾸밀 수 있습니다.