728x90
반응형
* 스윙 컴포넌트의 이름은 모두 J로 시작된다. 그리고 모든 스윙 컴포넌트들은 반드시 JComponent를 상속받는다. 그러므로 JComponent에는 스윙 컴포넌트들의 공통적인 속성과 메소드가 들어 있다.
* JComponent는 추상 클래스이며 모든 스윙 컴포넌트들이 상속받는 많은 공통 메소드와 상수들을 구현하고 있다.
추상 클래스 :
1) 실체클래스들의 공통적인 부분 (변수, 메소드)를 추출해서 선언한 클래스
2) 실체성이 없고 구체적이지 않으므로 추상클래스는 객체를 생성할 수 없다.
3) 추상클래스와 실체클래스는 상속관계이다.
* 컴포넌트의 모양과 관련된 메소드
void setForeground(Color) // 전경색 설정(글씨)
void setBackground(Color) // 배경색 설정
void setOpaque(boolean) // 불투명성 설정
void setFont(Font) // 폰트 설정
Font getFont() // 폰트 리턴
* 컴포넌트의 위치와 크기에 관련된 메소드
int getWidth() // 폭 리턴
int getHeight() // 높이 리턴
int getX() // x 좌표 리턴
int getY() // y 좌표 리턴
Point getLocationOnScreen() // 스크린 좌표상에서의 컴포넌트 좌표
void setLocation(int, int) // 위치 지정
void setSize(int, int) // 크기 지정
* 컴포넌트의 상태와 관련된 메소드
void setEnabled(boolean) // 컴포넌트 활성화/비활성화
void setVisible(boolean) // 컴포넌트 보이기/숨기기
boolean isVisible() // 컴포넌트의 보이는 상태 리턴
* 컨테이너를 위한 메소드
Component add(Component) // 자식 컴포넌트 추가
void remove(Component) // 자식 컴포넌트 제거
void removeAll() // 모든 자식 컴포넌트 제거
Component[] getComponents() // 자식 컴포넌트 리스트 리턴
Container getParent() // 부모 컨테이너 리턴
Container getTopLevelAncestor() // 최상위 부모 컨테이너 리턴
* ActionListener를 활용한 버튼 생성
package Ch11;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class SwingAPIEx extends JFrame{
Container contentPane;
JButton b1, b2, b3, b4;
SwingAPIEx(){
setTitle("Swing 공통 메소드 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
// 위치와 크기 정보 버튼 생성 b1
b1 = new JButton("위치와 크기와 정보");
b1.addActionListener(new MyButtonListener());
contentPane.add(b1);
// 모양정보 버튼 생성 b2
b2 = new JButton("모양 정보");
b2.setOpaque(true);
b2.setForeground(Color.magenta);
b2.setBackground(Color.yellow);
b2.setFont(new Font("고딕체", Font.ITALIC, 20));
b2.addActionListener(new MyButtonListener());
contentPane.add(b2);
// 작동하지 않는 버튼 생성 b3
b3 = new JButton("작동하지 않는 버튼");
b3.setEnabled(false);
b3.addActionListener(new MyButtonListener());
contentPane.add(b3);
// 숨기기/보이기 토글 버튼 생성
b4 = new JButton("숨기기/보이기");
b4.addActionListener(new MyButtonListener());
contentPane.add(b4);
setSize(250,200);
setVisible(true);
}
class MyButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
Object source = e.getSource(); // 선택된 버튼 알아내기
if(source == b1) {
System.out.println("버튼의 위치와 크기");
System.out.println("위치 = (" + b1.getX() + "," + b1.getY()+")");
System.out.println("크기 = (" + b1.getWidth() + "," + b1.getHeight()+")");
JPanel c = (JPanel)b2.getParent(); // 부모 컨테이너의 주소를 알아낸다. 부모는 컨텐트
System.out.println("컨탠트팬의 위치와 크기");
System.out.println("위치 = (" + c.getX() + "," + c.getY()+")");
System.out.println("크기 = (" + c.getWidth() + "," + c.getHeight()+")");
}
else if(source == b2) {
System.out.println("폰트 = " + b2.getFont());
System.out.println("글자색 = " + b2.getForeground());
System.out.println("배경색 = " + b2.getBackground());
}
else {
if(b1.isVisible()) {
b1.setVisible(false);
b2.setVisible(false);
b3.setVisible(false);
} else {
b1.setVisible(true);
b2.setVisible(true);
b3.setVisible(true);
}
}
}
}
public static void main(String[] args) {
new SwingAPIEx();
}
}
반응형
'IT > 자바공부' 카테고리의 다른 글
자바 Swing JButton, 버튼 컴포넌트, 명품자바프로그래밍11장 (0) | 2022.07.26 |
---|---|
자바 Swing JLabel, 레이블 컴포넌트, 명품자바프로그래밍11장 (0) | 2022.07.26 |
자바 Mouse 이벤트, 명품자바프로그래밍10장 (0) | 2022.07.25 |
명품자바프로그래밍 10장, 자바의 이벤트 처리 요약 (0) | 2022.07.25 |
자바 KeyEvent & KeyListener, focus, 명품자바프로그래밍10장 (0) | 2022.07.25 |