Java

2024.04.26 Swing - 2

정훈5 2024. 4. 26. 12:16

기본 컴포넌트를 확인해 보자.

package ch02;

import java.awt.FlowLayout;

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("button");
		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(button);
		add(checkBox);

	}

	public static void main(String[] args) {
		new MyComponents();
	}

}

 

package ch02;

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

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

public class MyFramePanel extends JFrame {

	private JButton button1;
	private JButton button2;

	// 패널 추가하기
	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.blue);
		
		panel2 = new JPanel();
		panel2.setBackground(Color.black);

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

	private void setInitLayout() {
		// 루트 패널 --> BorderLayout
		add(panel1, BorderLayout.CENTER);
		add(panel2, BorderLayout.SOUTH);
		
		panel1.setLayout(new FlowLayout());
		panel1.add(button1);
		
		
		panel2.setLayout(new FlowLayout());
		panel2.add(button2);
		
		
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new MyFramePanel();
	}
}
package ch02;

import java.awt.FlowLayout;

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("button");
		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(button);
		add(checkBox);

	}

	public static void main(String[] args) {
	MyComponents components = new MyComponents(); // 객체의 주소 값
	components.textField.setText("반가워");
	
	}

}

 

package ch02;

public class MainTest1 {
	
	public static void main(String[] args) {
		new MyDrawFrame();
	}

}

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------

 

package ch02;

import java.awt.Graphics;

/*
 * 패널에 그림을 그리는 방법
 * 자바 문법 - 중첩 클래스 ( 클래스 안에 클래스를 만드는 것)
 * 외부 클래스, 내부 클래스, outer class, inner class
 */
import javax.swing.JFrame;
import javax.swing.JPanel;

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 {

		// paint = o;

		@Override
		public void paint(Graphics g) {
			super.paint(g);
			g.drawRect(100, 100, 50, 100);
			g.drawRect(200, 200, 150, 150);
			// int x1, int y1, int x2, int y2
			g.drawLine(250, 300, 300, 300);
			g.drawOval(100, 150, 200, 300);
			g.drawString("반가워", 400, 400);
			g.drawString("⭐⭐", 500, 500);
		} // end of inner class

	}
}

 

package ch02;

public class MainTest1 {
	
	public static void main(String[] args) {
		new MyDrawFrame();
	}

}