본문으로 바로가기

Swing - Component,Panel

category Java 2024. 4. 29. 18:38
package ch02;

import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.image.ComponentSampleModel;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class MyComponents extends JFrame {
	
	private JButton button;
	private JLabel label;
	private JTextField textField;
	private JPasswordField passwordField;
	private JCheckBox checkBox;
	
	
	public MyComponents() {
		
		initData();
		setInitLayout();
	}
	
	private void initData() {
		setTitle("컴포넌트 확인");
		setSize(800, 800);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		button = new JButton("JButton");
		label = new JLabel("글자를 띄우는 컴포넌트");
		textField = new JTextField("아이디입력", 20);
		passwordField = new JPasswordField("비번입력", 20);
		checkBox = new JCheckBox("동의");
	}
	
	private void setInitLayout() {
		
		setLayout(new FlowLayout());
		setVisible(true);
		
		add(button);
		add(label);
		add(textField);
		add(passwordField);
		add(checkBox);
		
	}
	
	public static void main(String[] args) {
		MyComponents componets =  new MyComponents();
		componets.textField.setText("반가워");
		
		 
	}
	
}

 

package ch02;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyFramePanel extends JFrame {

	private JButton button1;
	private JButton button2;
	private JButton button3;

	// 패널 추가하기
	private JPanel panel1;
	private JPanel panel2;

	public MyFramePanel() {
		initData();
		setInitLayout();
	}

	private void initData() {
		setTitle("패널추가 연습");
		setSize(600, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		panel1 = new JPanel();
		panel1.setBackground(Color.LIGHT_GRAY);
		panel2 = new JPanel();
		panel2.setBackground(Color.DARK_GRAY);

		button1 = new JButton("button1");
		button2 = new JButton("button2");
		button3 = new JButton("button3");

	}

	private void setInitLayout() {
		// 루트 패널 --> BorderLayout
		add(panel1, BorderLayout.CENTER);
		add(panel2, BorderLayout.SOUTH);

		panel1.add(button1);
		panel2.add(button2);
		panel2.add(button3);

		setVisible(true);

	}

	public static void main(String[] args) {

		new MyFramePanel(); // 객체의 주소 값
	}

}

 

 

 

package ch02;

import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 패널에 그림을 그리는 방법 자바 문법 - 중첩 클래스(=클래스 안의 클래스를 만드는 것) -> 내부 클래스 . 외부 클래스
 * (outer/inner) Class
 */
public class MyDrawFrame extends JFrame {

    // 내부 클래스를 외부 클래스에서 사용하려면
    // 멤버로 가지고 있어야 한다.
    MyDrawPanel myDrawPanel;

    public MyDrawFrame() {
        initData();
        setInitLayout();
    }

    private void initData() {
        setTitle("내부 클래스를 활용한 그림 연습");
        setSize(600, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        myDrawPanel = new MyDrawPanel();
    }

    private void setInitLayout() {
        add(myDrawPanel);
        setVisible(true);

    }
    
    // 내부 클래스 만들어 보기
    // 가독성을 높이기 위해 사용
    // paint -> 좌표값으로 x = 0, y = 0
    // JPanel 에 있는 기능을 확장해보자.
    class MyDrawPanel extends JPanel {
        
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            g.drawRect(200, 200, 50, 100);
            g.drawRect(300, 300, 300, 300);
            g.drawOval(100, 150, 200, 300);
            g.drawString("반가워", 400, 500);
            g.drawString("⭐", 500, 500);
        }
    

    } // end of inner class

    public static void main(String[] args) {
		
    	MyDrawFrame drawframe = new MyDrawFrame();
	}
    
}

'Java' 카테고리의 다른 글

Swing - (이미지 겹치는 방법)  (0) 2024.04.29
Swing - (이미지 올리기)  (0) 2024.04.29
Swing - BorderLayout  (0) 2024.04.29
Swing - FlowLayout  (0) 2024.04.29
Exception(예외처리)  (0) 2024.04.29