Swing 구성요소는 AWT 구성요소와 유사하지만 각 구성요소에 새로운 메소드를 추가하고 더욱 발전된 구성요소를 제공합니다.
Swing의 기본 구성요소:
1. 버튼(JButton):
Swing의 버튼은 이미지를 표시할 수 있고, 버튼을 창의 기본 아이콘으로 설정할 수 있으며, 여러 이미지를 버튼에 할당할 수 있습니다.
(1) JButton의 일반적으로 사용되는 구성 방법.
JButton(String text): 버튼에 표시되는 문자입니다.
JButton(아이콘 아이콘): 버튼에 아이콘을 표시합니다.
JButton(String text, Icon icon): 아이콘과 문자가 모두 버튼에 표시됩니다.
(2) 일반적으로 사용되는 방법:
b1.setEnabled(false); //현재 버튼을 사용할 수 없도록 설정
b1.setToolTipText("..."): //버튼 팁 텍스트 설정
b1.setMnemonic(KeyEvent.VK_D); // b1을 alt+D 키에 바인딩
(3).케이스 코드:
다음과 같이 코드 코드를 복사합니다.
공용 클래스 JButtonExample3은 JPanel을 확장하여 ActionListener를 구현합니다.
보호된 JButton b1, b2, b3;
공개 JButtonExample3() {
ImageIcon leftButtonIcon = createImageIcon("right.gif");
ImageIcon middleButtonIcon = createImageIcon("middle.gif");
ImageIcon rightButtonIcon = createImageIcon("left.gif");
b1 = new JButton("잘못된 가운데 버튼(D)", leftButtonIcon);
b1.setVerticalTextPosition(AbstractButton.CENTER);//가로 중심 정렬
b1.setHorizontalTextPosition(AbstractButton.LEADING);//LEFT와 동일
b1.setMnemonic(KeyEvent.VK_D); // b1을 alt+D 키에 바인딩
b1.setActionCommand("비활성화");
b2 = new JButton("M 가운데 버튼", middleButtonIcon);
b2.setVerticalTextPosition(AbstractButton.BOTTOM);
b2.setHorizontalTextPosition(AbstractButton.CENTER);
b2.setMnemonic(KeyEvent.VK_M); // b2를 alt+M 키에 바인딩
b3 = new JButton("E는 가운데 버튼을 활성화합니다.", rightButtonIcon);
b3.setMnemonic(KeyEvent.VK_E); // b3를 alt+E 키에 바인딩
b3.setActionCommand("활성화");
b3.setEnabled(false);
//1과 3에 이벤트 리스너를 추가합니다.
b1.addActionListener(this);
b3.addActionListener(this);
//버튼 프롬프트 텍스트 설정
b1.setToolTipText("이 버튼을 클릭하면 가운데 버튼이 무효화됩니다!");
b2.setToolTipText("이 버튼을 클릭하면 이벤트가 발생하지 않습니다!");
b3.setToolTipText("이 버튼을 클릭하면 가운데 버튼이 활성화됩니다.");
//JPanel에 버튼 추가
추가(b1);
추가(b2);
추가(b3);
}
공공 무효 actionPerformed(ActionEvent e) {
if ("disable".equals(e.getActionCommand())) {
b2.setEnabled(false);
b1.setEnabled(false);
b3.setEnabled(true);
} 또 다른 {
b2.setEnabled(true);
b1.setEnabled(true);
b3.setEnabled(false);
}
}
protected static ImageIcon createImageIcon(문자열 경로) {
java.net.URL imgURL = JButtonExample3.class.getResource(경로);
if (imgURL != null) {
새로운 ImageIcon(imgURL)을 반환합니다.
} 또 다른 {
System.err.println("파일을 찾을 수 없습니다: " + 경로);
null을 반환;
}
}
공개 정적 무효 메인(String[] args) {
//새로운 스윙 인터페이스를 사용하도록 설정
//새로 생성된 JFrame에 현재 모양(예: 테두리, 창을 닫는 위젯, 제목 등)에서 제공하는 창 장식이 있어야 하는지 여부에 대한 힌트를 제공합니다.
JFrame.setDefaultLookAndFeelDecorated(true);
//폼 생성
JFrame 프레임 = new JFrame("리틀 드래곤 버튼");
프레임.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//패널 생성
JButtonExample3 newContentPane = new JButtonExample3();
newContentPane.setOpaque(true);
프레임.setContentPane(newContentPane);
// 표시 형식
프레임.팩();
프레임.setLocation(300, 200);
프레임.setVisible(true);
}
}
실행 중인 스크린샷:
2. 콤보 상자(JComboBox):
콤보 상자(JComboBox 드롭다운 목록) 사용 방법과 예제에 대한 자세한 설명:
건설 방법:
* JComboBox()는 JComboBox 구성 요소를 생성합니다.
* JComboBox(ComboBoxModel 모델) 모델을 기반으로 JComboBox 컴포넌트를 생성합니다.
* JComboBox(Objext[] items)는 배열 객체를 사용하여 JComboBox 구성 요소를 만듭니다.
* JComboBox(벡터 항목)은 Vector 객체를 사용하여 JComboBox 구성 요소를 생성합니다.
일반적으로 사용되는 방법:
....
포괄적인 예:
다음과 같이 코드 코드를 복사합니다.
import java.awt.* /* 사용자 인터페이스 생성 및 그래픽 이미지 그리기를 위한 모든 클래스가 포함되어 있습니다. */
import javax.swing.* /* "경량" 구성요소 세트를 제공하고 이러한 구성요소가 모든 플랫폼에서 동일한 방식으로 작동하도록 시도합니다 */
공개 클래스 JComboBoxDemo는 JFrame을 확장합니다.
공개 JComboBoxDemo() {
/*
* 컨테이너는 모든 컨테이너의 상위 클래스이자 Java 언어 구성 요소 클래스인 Component의 하위 클래스입니다. 컨테이너는 다른 구성 요소와 컨테이너를 수용하는 기능을 갖는 구성 요소입니다.
* Java 그래픽 사용자 인터페이스의 가장 기본적인 요소는 컴포넌트입니다. 컴포넌트는 버튼, 텍스트 상자 등과 같이 화면에 그래픽으로 표시되고 사용자와 상호 작용할 수 있는 객체입니다.
* Java에서는 일반적으로 구성 요소가 특정 컨테이너에 배치되고 this.getContentPane() 메서드를 사용하여 이 형식의 contentPane 객체를 반환합니다.
*/
컨테이너 contentPane = this.getContentPane();
/* 패널 객체를 생성하고 레이아웃 관리자를 GridLayout, 1행 2열로 지정합니다. Jpanel의 기본 레이아웃 관리는 FlowLayout입니다. */
JPanel jPanel1 = new JPanel(new GridLayout(1, 2));
// 문자열 배열을 사용하여 JComboBox 생성
String[] 과일 = { "사과", "바나나", "오렌지", "배", "망고" };
JComboBox jComboBox1 = 새로운 JComboBox(과일);
jComboBox1.addItem("Other"); //목록 상자 옵션 끝에 또 다른 "기타" 옵션을 추가합니다.
//jList1 객체의 제목 테두리 설정
jComboBox1.setBorder(BorderFactory.createTitledBorder("좋아하는 과일:"));
//패널에 목록 상자 jComboBox1 추가
jPanel1.add(jComboBox1);
//ComboBoxModel을 사용하여 JComboBox 생성
ComboBoxModel myModel = new MyModel();
JComboBox jComboBox2 = new JComboBox(myModel);
//jList1 객체의 제목 테두리 설정
jComboBox2.setBorder(BorderFactory.createTitledBorder("좋아하는 과일:"));
//패널에 목록 상자 jComboBox2 추가
jPanel1.add(jComboBox2);
//상위 컨테이너에 패널 추가
contentPane.add(jPanel1);
//이 양식의 제목을 설정합니다.
this.setTitle("JComboBoxDemo");
//이 양식에 표시되는 초기 크기를 설정합니다.
this.setSize(350, 90);
this.setLocation(300, 200);
//이 양식이 처음에 표시되도록 설정
this.setVisible(true);
}
MyModel 클래스는 DefaultComboBoxModel을 확장합니다.
String[] 과일 = { "사과", "바나나", "오렌지", "배", "망고" };
내모델() {
for (int i = 0; i < Fruit.length; i++) {
/* addElement() 메소드는 목록 상자에 옵션 요소를 추가하는 데 사용됩니다 */
this.addElement(과일[i]);
}
}
}
공개 정적 무효 메인(문자열 인수[]) {
JComboBoxDemo 테스트 = new JComboBoxDemo();
}
}
스크린샷:
3. 목록 상자(JList):
목록 상자의 기능은 드롭다운 목록 상자와 유사하며, 여러 항목 중에서 선택할 수도 있지만, 단일 선택, 연속 선택 등 보다 다양한 선택 모드를 제공한다는 차이점이 있습니다. 및 ListSelectionModel의 3개 상수에 해당하는 다중 선택입니다.
(1) static int SINGLE_SELECTION 하나만 선택할 수 있습니다.
(2) static int SINGLE_INTERVAL_SELECTION [Shift] 키를 누른 채 접촉 간격을 선택합니다.
(3) static int MULTIPLE_INTERVAL_SELECTION 여러 항목을 선택하려면 [Ctrl] 키를 누르세요.
생성자는 다음과 같습니다.
(1) JList()는 JList 구성 요소를 생성합니다.
(2) JList(ListModel 모델) 모델을 기반으로 JList 컴포넌트를 생성합니다.
(3) JList(Object[] items)는 배열 객체를 사용하여 JList 구성 요소를 생성합니다.
(4) JList(벡터 항목) Vector 객체를 사용하여 JList 구성 요소를 만듭니다.
JScrollPane에 목록 상자 JList를 추가하면 목록 상자를 스크롤할 수 있습니다.
List(JList) 컴포넌트를 사용하는 예제 1은 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
공개 클래스 JListDemo1은 JFrame을 확장합니다.
컨테이너 콘텐츠Pane;
JPanel jp;
JList jList1,jList2,jList3;
공개 JListDemo1(){
contentPane = this.getContentPane();
jp = new JPanel(new GridLayout(1,3));
//문자열 배열을 사용하여 JList 객체 생성
String[] 과일={"사과","바나나","오렌지","배","망고"};
jList1=새 JList(과일);
//jList1 객체의 제목 테두리 설정
jList1.setBorder(BorderFactory.createTitledBorder("가장 좋아하는 과일: "));
//jList1 객체의 선택 모드를 단일 선택으로 설정
jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jp.add(jList1);
//ListModel을 사용하여 JList 객체를 생성하여 목록 콘텐츠의 역학을 실현합니다.
ListModel myModel=new MyModel(); //목록 모델 객체 생성
jList2=new JList(myModel); //목록 모델 객체를 기반으로 목록 생성
jList2.setBorder(BorderFactory.createTitledBorder("가장 좋아하는 과일: "));
//다중 선택을 위해 [Ctrl] 키를 누르도록 jList2 객체의 선택 모드를 설정합니다.
jList2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
jp.add(jList2);
jList3=새 JList(과일);
jList3.setBorder(BorderFactory.createTitledBorder("가장 좋아하는 과일: "));
jList3.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
jList3.setVisibleRowCount(3);
jList3.setFixedCellWidth(120);
jList3.setFixedCellHeight(30);
JScrollPane jScrollPane = new JScrollPane(jList3);
jp.add(jScrollPane);
contentPane.add(jp);
this.setTitle("JListDemo");
this.setSize(340,200);
//팩();
this.setLocation(400, 300);
this.setVisible(true);
}
//DefaultListModel 클래스를 상속함으로써 동적 콘텐츠의 목록 선택이 가능합니다.
MyModel 클래스는 DefaultListModel을 확장합니다.
String[] 과일={"사과","바나나","오렌지","배","망고"};
내모델(){
for(int i=0;i<fruit.length;i++){
/* void addElement(Object obj)
* 해당 테이블의 끝에 지정된 구성요소를 추가합니다. */
this.addElement(과일[i]);
}
}
}
공개 정적 무효 메인(문자열[] 인수){
JListDemo1 테스트=new JListDemo1();
}
}
실행 결과는 아래 그림과 같습니다.
목록 상자 예제 2 코드:
다음과 같이 코드 코드를 복사합니다.
공개 클래스 JListDemo2는 JFrame을 확장합니다.
컨테이너 콘텐츠Pane;
JPanel jp;
JList jListFont, jListSize;
//건설자
공개 JListDemo2() {
contentPane = this.getContentPane();
jp = new JPanel(new GridLayout());
setJListFont();
setJListFontSize();
contentPane.add(jp);
this.setTitle("JListDemo");
this.setSize(240, 200);
this.setLocation(400, 300);
this.setVisible(true);
} // JListDemo2 끝
공공 무효 setJListFont() {
그래픽환경 ge = 그래픽환경
.getLocalGraphicsEnvironment();
final String FontName[] = ge.getAvailableFontFamilyNames(); // 시스템의 로컬 글꼴을 가져옵니다.
jListFont = new JList(글꼴이름);
//jList1 객체의 제목 테두리 설정
jListFont.setBorder(BorderFactory.createTitledBorder("시스템 글꼴: "));
//jList1 객체의 선택 모드를 단일 선택으로 설정
jListFont.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jListFont.setVisibleRowCount(3);
jListFont.setFixedCellWidth(120);
jListFont.setFixedCellHeight(20);
JScrollPane jScrollPane1 = new JScrollPane(jListFont);
jp.add(jScrollPane1);
}
공공 무효 setJListFontSize() {
final String FontSize[] = { "8", "9", "10", "12", "14", "15", "16",
"18", "20", "21", "22", "24", "26", "28", "30", "36", "48",
"54", "72", "89" };
//글꼴 크기 목록 상자 생성 listSize
jListSize = new JList(fontSize);
jListSize.setBorder(BorderFactory.createTitledBorder("글꼴 크기: "));
//다중 선택을 위해 [Ctrl] 키를 누르도록 jList2 객체의 선택 모드를 설정합니다.
jListSize
.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
jListSize.setVisibleRowCount(3);
jListSize.setFixedCellWidth(120);
jListSize.setFixedCellHeight(20);
JScrollPane jScrollPane2 = new JScrollPane(jListSize);
jp.add(jScrollPane2);
}
공개 정적 무효 메인(String[] args) {
JListDemo2 테스트 = new JListDemo2();
}
}
프로그램 작동의 개략도:
4.javax.스윙
클래스 JColorChooser:
JColorChooser(색상 선택 대화 상자)는 사용자가 색상을 조작하고 선택할 수 있는 컨트롤러 창을 제공합니다.
JColorChooser 생성자:
JColorChooser(): JColorChooer 객체를 생성합니다. 기본 색상은 흰색입니다.
JColorChooser(ColorinitialColor): JColorChooer 객체를 생성하고 초기 색상을 설정합니다.
JColorChooser(ColorSelectionModel 모달): ColorSelectionModel을 사용하여 JColorChooser 객체를 구성합니다.
JColorChooser를 사용하는 가장 일반적인 방법은 JColorChooser의 정적 메소드 showDialog()를 사용하는 것입니다. 즉, 대부분의 경우 새로운 JColorChooser 객체를 생성하지 않고 JColorChooser의 정적 메소드(showDialog())를 직접 사용합니다. 색상 선택 대화 상자를 출력하려면 이 방법을 사용하여 사용자가 선택한 색상을 가져올 수도 있습니다. 사용자가 선택하지 않으면 null 값이 반환됩니다.
색상 선택 대화 상자에 대한 간단한 사례 1 코드:
다음과 같이 코드 코드를 복사합니다.
공개 클래스 JColorChooserDemo {
공개 정적 무효 메인(String[] args) {
JFrame 프레임 = new JFrame("JColorChooserDemo");
MyPanel 패널 = new MyPanel();
프레임.getContentPane().add(패널);
프레임.팩();
프레임.setLocation(300, 200);
프레임.setVisible(true);
프레임.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
MyPanel 클래스는 JPanel을 확장하고 ActionListener를 구현합니다.
개인 정적 최종 긴 serialVersionUID = 1L;
개인 JButton 버튼, rgb, 빨간색, 녹색, 파란색;
개인 색상 color = new Color(255, 51, 150);
공개 MyPanel() {
버튼 = new JButton("색상 가져오기");
rgb = new JButton("RGB: ");
red = new JButton("빨간색: ");
green = new JButton("녹색: ");
blue = new JButton("파란색: ");
버튼.addActionListener(this);
setPreferredSize(new Dimension(550, 250));
setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
setBackground(색상);
추가(버튼);
추가(rgb);
추가(빨간색);
추가(녹색);
추가(파란색);
}
공공 무효 actionPerformed(ActionEvent e) {
color = JColorChooser.showDialog(this, "색상 선택", color);
if (색상 != null) {
setBackground(색상);
Button.setText("다시 가져오기");
rgb.setText("RGB: " + color.getRGB());
red.setText("빨간색: " + color.getRed());
green.setText("녹색: " + color.getGreen());
blue.setText("파란색: " + color.getBlue());
}
}
}
실행 결과 다이어그램은 다음과 같습니다.
JColorChooser를 사용하는 또 다른 일반적인 방법은 createDialog() 정적 메서드를 사용하는 것입니다. 이 정적 메서드를 사용한 후에는 이 JDialog 개체를 사용하여 색상 선택 대화 상자에 대한 추가 설정을 지정할 수 있습니다. 이 방법을 사용하려면 JColorChooser 객체와 협력해야 합니다. 즉, 새로운 JColorChooser 객체를 생성해야 합니다. 다음 예제에서는 색상을 선택한 후 JLabel에서 배경색을 변경할 수 있습니다.
색상 선택 대화 상자에 대한 간단한 사례 2 코드:
다음과 같이 코드 코드를 복사합니다.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
공개 클래스 ColorChooserDemo1은 MouseAdapter {를 확장합니다.
JFrame f = null;
JLabel 라벨 = null;
JLabel label1 = null;
JLabel label2 = null;
직사각형 Rec1 = null;
직사각형 Rec2 = null;
공개 ColorChooserDemo1() {
f = new JFrame("ColorChooser 예");
컨테이너 contentPane = f.getContentPane();
contentPane.addMouseListener(this);
label = new JLabel(" ", JLabel.CENTER);
label.setPreferredSize(new Dimension(300, 20));
JPanel 패널 = new JPanel();
panel.setLayout(new GridLayout(1, 2));
label1 = new JLabel("왼쪽 레이블", JLabel.CENTER);
label1.setBackground(Color.red);
label1.setForeground(Color.black);
label1.setOpaque(true);
label1.setBounds(0, 0, 150, 150);
panel.add(label1);
label2 = new JLabel("오른쪽 레이블", JLabel.CENTER);
label2.setBackground(Color.green);
label2.setForeground(Color.black);
label2.setOpaque(true);
label2.setBounds(150, 0, 150, 150);
panel.add(label2);
rec1 = label1.getBounds();
Rec2 = label2.getBounds();
contentPane.add(패널, BorderLayout.CENTER);
contentPane.add(label, BorderLayout.SOUTH);
f.setSize(new Dimension(300, 150));
f.setVisible(true);
f.addWindowListener(새 WindowAdapter() {
공공 무효 windowClosing(WindowEvent e) {
시스템.exit(0);
}
});
}
// MouseAdapter에 mousePressed() 및 mouseClicked() 메서드를 구현합니다. 마우스를 누르면 마우스 커서의 현재 위치를 알 수 있습니다.
//두 번, 커서가 라벨에 있으면 색상 선택 대화 상자가 나타나고 사용자는 원하는 색상을 선택하여 라벨 색상을 변경할 수 있습니다.
공공 무효 mousePressed(MouseEvent e) {
label.setText("현재 마우스 좌표(X,Y)는 다음과 같습니다: (" + e.getX() + "," + e.getY() + ")");
}
공공 무효 mouseClicked(MouseEvent e) {
포인트 포인트 = e.getPoint();
if (e.getClickCount() == 2) {
if (rec1.contains(point)) {
/*
* 색상 선택 대화 상자를 출력하려면 JColorChooser의 showDialog() 정적 메소드를 사용하십시오.
*, showDialog()의 세 가지 매개 변수는 대화 상자의 상위 구성 요소, 색상 선택 대화 상자 제목입니다.
*, 대화 상자의 기본 색상으로 사용자가 색상을 선택한 후 "확인" 버튼을 눌러 돌아갑니다.
* 색상 객체, "취소" 버튼을 누르면 null 값이 반환됩니다.
*/
색상 색상 = JColorChooser.showDialog(f,
"라벨1 색상 변경", Color.white);
if (color != null) // 값이 null이면 사용자가 취소 버튼을 눌렀다는 의미입니다.
label1.setBackground(color);
}
if (rec2.contains(point)) {
색상 색상 = JColorChooser.showDialog(f,
"라벨2 색상 변경", Color.yellow);
if (color != null) // 값이 null이면 사용자가 취소 버튼을 눌렀다는 의미입니다.
label2.setBackground(color);
}
}
}
공개 정적 무효 메인(String[] arg) {
새로운 ColorChooserDemo1();
}
}