자바 GUI프로그래밍

ChoRong0824·2022년 9월 8일
2

Java_GUI

목록 보기
9/9
post-thumbnail

제가 학습하기 전, 학습중에 문득 궁금하게 된 점과 알게된 점을 포스팅하였습니다.

UI(User Interface)

  • UI는 사용자와 컴퓨터가 정보를 주고받기 위해 사용자와 프로그램이 상호 작용하는 프로그램의 일부분으로 사용자 인터페이스라 부릅니다.
    핸드폰이나 컴퓨터 프로그램, 네비게이션 같은 전자 기기 등 시스템과 사용자 사이에서 의사소통을 목적으로 하는 사용설명서의 일종이라고 할 수 있습니다.
    어렵게 다가올 수 있지만 간단하게 설명하면

    눈에 보이는, 시각적인 효과 를 주는 부분이라고 생각하면 됩니다.

GUI(Graphic User Interface)

  • GUI는 사용자가 그래픽을 통해 컴퓨터와 정보를 교환하는 환경을 말합니다.
    이전까지 사용자 인터페이스는 키보드를 통해 명령어로 작업을 수행시켰지만 GUI에서는 마우스 등을 이용하여 화면의 메뉴 중 하나를 선택하여 작업을 수행합니다.
    간단하게 GUI는 글자뿐만 아니라 화면에 아이콘을 띄어 마우스를 이용하여 화면에 있는 아이콘을 클릭하여 작업을 수행하는 방식입니다.
    대표적으로는 마이크로소프트의 Windows, 애플의 Mac 운영체제 등이 있습니다.

    (예) 제품관리 프로그램 창을 띄워서 로그인을 할 때 조회, 로그인, 로그아웃
    , 발주 등이 있습니다. 이것을 선택하는 화면을 생각하시면 됩니다.

UI와 GUI의 차이점

일반적으로 UI라고 부르는 것은 정확히 말하자면 GUI입니다.
GUI는 UI의 한 종류로 사용자가 전자기기를 작동하기 위한 화면을 말하며, 일상생활에서 접하는 터치스크린들이 여기에 해당합니다. (네비게이션 등)
GUI 디자이너는 아이콘, 컬러, 레이아웃 등 시각적 요소를 활용해 서비스의 UI를 보기 좋게 만드는 일을 합니다. 궁극적으로 GUI는 성공적인 UI를 위해 존재합니다.

연습 문제

1번

package experience;

import java.awt.*;
import javax.swing.*;

public class FirstFrame extends JFrame{

    public FirstFrame(){
        System.out.println("Hello World");
        setTitle("First Frame !!");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        Container c = getContentPane();
        c.setLayout(new FlowLayout()); // ContentPane을 꾸며줌
        JButton button1 = new JButton("OK"); // 버튼생성
        //button1.setText("Ok");  버튼 안에 ok 문구를 만들어 줘야하는데 한줄로 ok 버튼 생성함.
       
        JButton button2 = new JButton("Cancel");
        JButton button3 = new JButton("Ignore");
       
        // c.add(button1, BorderLayout.NORTH); // BorderLayout을 안 넣는다면 Center에 들어감.
        // c.add(button2, BorderLayout.SOUTH);
        // c.add(button3);
       
        JPanel panel = new JPanel();
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.setBackground(Color.RED);
        add(panel, BorderLayout.NORTH);
        setVisible(true); //가장 마지막에 들어가는 것이 좋음
        
        // get은 빼내오는 것임. set은 넣는다고 보면됌.
        // borderLayout 자주 쓰이기 때문에 알아두는 것이 좋음.
    }
    public static void main(String[] args) {
        new FirstFrame();
    }
}

2번

	public class GridLayoutEx extends JFrame{
    //Container 사용경우 (주석처리함)
    //Container c = getContentPane();
    JPanel p1, p2;
    JLabel[] label = new JLabel[4];
    JTextField[] label = new JLabel[4];
    JTextField[] textField = new JTextField[4];
   	JButton[] button = new JButton[3];
    
    public GridLayoutEx(){
    	setTitle("Grid Test");
        setSize(300, 180);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        newComponents();
        setComponents(); //호출
        addComponents(); //붙이는 것이라고 보면 됨
        setVisible(true);

// new set add로 나눠서 생각해보기
// 머릿 속에서 어떤식으로 출력이 나오게끔 할 지 큰 틀을 먼저 생각해보기}
		
        void newComponents(){ 	// void를 사용해서 돌려받을 것이 없다는 것을 명시
        	String[] name = {"이름", "학년", "학과", "과목"};
            p1 = new JPanel();
            p2 = new JPanel();
            for(int i=0;i<4;i++){
            	label[i]= new JLabel(name[i]);
                textField[i]= new JTextField(20);}
                
            button[0] = new JButton("등록");
            button[1] = new JButton("수정");
            button[2] = new JButton("삭제");
            }
        void setComponents(){
        	p1.setLayout(new GridLayout(4,2,5,5));
            setResizable(false);	// 크기 조정 안되게 막아버리는 기능(JFrame으로 상속받은 나 자신임)
            // this.setResizable // frame이라서 this사용
            // button[2].setEnabled(false); // 클릭 자체가 안되게 막는 것임
            // textField[2].setText("컴퓨터공학과"); // 미리 입력해둠 => set이 필요한 이유 }
        void addComponents(){
        	for(int i=0;i<4;i++) {
         	p1.add(label[i]);
            p1.add(textField[i]);
            
            p2.add(button[0]);
            p2.add(button[1]);
            p2.add(button[2]);
			
            add(p1,BorderLayout.CENTER);  // c.add 로 해야함 위에서 컨테이너 사용 시
            add(p2,BorderLayout.SOUTH); // c.add
            } }
        public static void main(String[] args){
        	new GridLayoutEx();
            } }

3번

public class MyFrame extends JFrame{
	public MyFrame(){
    	setTitle("GridLayout Sample");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        GridLayout grid = new GridLayout(4,2,0,5);
        
        Container c = getContentPane();
        
        c.setLayout(grid);
        c.add(new Jlabel(" "));
        c.add(new JTextField(""));
        c.add(new Jlabel(" "));
        c.add(new JTextField(""));        
        c.add(new Jlabel(" "));
        c.add(new JTextField(""));        
        c.add(new Jlabel(" "));
        c.add(new JTextField(""));
        
        c.setLayout(new FlowLayout());
        JBUtton button1 = new JButton("OK");
        JBUtton button2 = new JButton("Cancel");
        JBUtton button3 = new JButton("Ignore");
        
        JPanel panel = new JPanel();
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);        
        add(pane1,BorderLayout.SOUTH);
        
        setSize(300,200);
        setVisible(true) //맨 마지막에 들어가주는 것이 젤 좋음 (권장)
        }
        public void main(String[]args){
	        new MyFrame(); } }

4번

public class OpenEx extends JFrame{
	JPanel p1,p2;
    JButton [] button = new JButton[3];
    JLabel[] label = new JLabel[3];
    
    public OpenEx(){
    	setTitle("OpenEx");
        setSize(300,250);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        newComponents();
        setComponents();
        addCOmponents();
        setVisible(true);
}
	void newComponents() {
    	String [] bName = {"OPEN", "READ", "CLOSE"}; //
        String [] Iname = {"Hello", "LOVE", "Java"};
        p1 = new JPanel();
        p2 = new JPanel();
        for(int i=0;i<3;i++) {
			button[i] = new JButton(bName[i]);
            label[i] = new JLabel(IName[i]);
            } }
        
        void setComponents(){
        	p2.setLayout(null);
            p2.setBackground(Color.orange);
            label[0].setBounds(100, 100, 40, 20);
            label[1].setBounds(200, 150, 40, 20);
            label[2].setBounds(120, 60, 40, 20);
            }
        
        void addComponents() {
        	p1.add(button[0]);
        	p1.add(button[1]);
        	p1.add(button[2]);
        	p2.add(button[0]);            
        	p2.add(button[1]);            
        	p2.add(button[2]); 
            
            add(p1, BorderLayout.NORTH);
            add(p2, BorderLayout.CENTER);
            }
        	
        public static void main(String[] args){
        	new OpenEx();
            } }
profile
컴퓨터공학과에 재학중이며, 백엔드를 지향하고 있습니다. 많이 부족하지만 열심히 노력해서 실력을 갈고 닦겠습니다. 부족하고 틀린 부분이 있을 수도 있지만 이쁘게 봐주시면 감사하겠습니다. 틀린 부분은 댓글 남겨주시면 제가 따로 학습 및 자료를 찾아봐서 제 것으로 만들도록 하겠습니다. 귀중한 시간 방문해주셔서 감사합니다.

0개의 댓글