JAVA/Java.awt GUI

Java GUI

  • 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