- GUI (graphic user interface)
- JFrame을 상속받아 만든다
- 배치관리자 종류
- FlowLayout(): 순서대로(왼쪽에서 오른족으로 컴포넌트 배치)
- BorderLayout(): 동,서,남,북,중앙
- GridLayout(): 2차원
- CardLayout(): 카드 쌓아놓듯이 포개어 배치
public class GuiEx01 extends JFrame {
//JFrame을 상속받아 만든다.
GuiEx01() {
super("Java"); //제목설정 - 부모생성자(JFrame) 호출
setSize(300, 300); //프레임크기 설정
setVisible(true); //프레임 출력 메서드
JButton j1 = new JButton("버튼1");
JButton j2 = new JButton("버튼2");
JButton j3 = new JButton("버튼3");
Container c = getContentPane();
//컨텐트팬을 알아낸다. -윈도우창의 회색부분의 범위..
c.add(j1);
c.add(j2);
c.add(j3);
c.setLayout(new FlowLayout());
//배치관리자 > 순서대로 배치
}
public static void main(String[] args) {
new GuiEx01();
}
}
- 2
public class GuiEx02 extends JFrame {
GuiEx02(){
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(new JButton("1"));
setSize(300, 300);
setVisible(true);
}
public static void main(String[] args) {
new GuiEx02();
}
}
- 이벤트 처리
- ActionListener(인터페이스)
- - actionPerformed
- JButton, JMenuItem, JTextField
- MouseListener -> MouseAdapter
- 단점: 추상메서드 전부 가져와서 구현해야한다. -> MouseAdapter 로 보완
- MouseMotionListener
- 마우스 이벤트
class Mouse extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
System.out.println("¸¶¿ì½ºÅ¬¸¯");
}
}
public class GuiEx05Mouse {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setLayout(new FlowLayout());
JButton j1 = new JButton("one");
JButton j2 = new JButton("two");
j1.addMouseListener(new Mouse()); //Ŭ¸¯À̺¥Æ®
j2.addMouseListener(new Mouse());
f.add(j1);
f.add(j2);
f.setSize(500, 250);
f.setVisible(true);
new GuiEx05Mouse();
}
}
- 마우스이벤트 2
class Mouse0607 extends MouseAdapter implements MouseMotionListener {
@Override
public void mouseDragged(MouseEvent e) {
// 드래그 시 배경색변경 이벤트 발생
Container c = (Container) e.getSource(); //이벤트가 일어난 원천 알아내기
c.setBackground(Color.orange);
}
@Override
public void mouseMoved(MouseEvent e) {}
public void mouseReleased(MouseEvent e){
Container c = (Container) e.getSource();
c.setBackground(Color.pink);
}
}
public class GuiEx09 extends JFrame {
GuiEx09(){
super("mouseMotion");
Container c = getContentPane();
c.setBackground(Color.pink); //배경색 지정
c.addMouseMotionListener(new Mouse0607()); //마우스 클릭
c.addMouseListener(new Mouse0607()); //마우스 놨을 때
setSize(500, 350);
setVisible(true);
}
public static void main(String[] args) {
new GuiEx09();
}
}
- ActionListener
/*
class My implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource(); //이벤트가 어디서 발생했는지.
if(b.getText().equals("클릭") ) {
b.setText("click");
}
else {
b.setText("클릭");
}
}
}
*/
public class GuiEx06ActionListener extends JFrame{
GuiEx06ActionListener(){
super("버튼 내용 변경");
Container c = getContentPane();
c.setLayout(new FlowLayout());
JButton j1 = new JButton("클릭");
//j1.addActionListener(new My());
//연결 Action이벤트 리스너 달기
j1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource(); //이벤트가 어디서 발생했는지.
if(b.getText().equals("클릭") ) {
b.setText("click");
}
else {
b.setText("클릭");
}
}
});
c.add(j1);
setSize(500, 300);
setVisible(true);
}
public static void main(String[] args) {
new GuiEx06ActionListener();
}
}
- ActionListener 2
public class GuiEx07 extends JFrame {
GuiEx07(){
super("버튼?");
JButton b1 = new JButton("ok");
JButton b2 = new JButton("cancel");
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(b1);
c.add(b2);
//ok 버튼 클릭 시 이벤트 처리
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("승인되었습니다.");
b2.setEnabled(true); //버튼 활성화
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("취소했습니다.");
b2.setEnabled(false);
}
});
//b2.setEnabled(false); //버튼 비활성화
c.setBackground(Color.DARK_GRAY);
setSize(500, 300);
setVisible(true);
}
public static void main(String[] args) {
new GuiEx07();
}
}
- 문자열
public class GuiEx08JLabel extends JFrame {
JLabel j = new JLabel("Hi"); //문자열
GuiEx08JLabel(){
super("JLabel");
Container c = getContentPane();
// c.setLayout(new FlowLayout());
c.setLayout(null); //배치관리자 삭제
j.setSize(50, 20); //문자 크기
j.setLocation(30, 50); //문자 위치
c.add(j);
setSize(500, 300);
setVisible(true);
}
public static void main(String[] args) {
new GuiEx08JLabel(); //생성자 호출
}
}
728x90
728x90
'JAVA > Java.awt GUI' 카테고리의 다른 글
Panel, Slider (0) | 2022.06.08 |
---|---|
이미지와 콤보박스 (0) | 2022.06.08 |
GUI 버튼 클릭이벤트 처리방법 (0) | 2022.06.07 |
GUI - JMenuBar, ImageIcon (0) | 2022.06.07 |
GUI 문자열과 체크박스 (0) | 2022.06.07 |