728x90
<1. Let's study Java>
import javax.swing.*;
import java.awt.*;
class MyWin extends JFrame {
public MyWin() {
setTitle("Let's study Java");
setSize(400, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contentPane = this.getContentPane();
contentPane.setBackground(Color.magenta);
setVisible(true);
}
}
public class Ex{
public static void main(String[] args) {
new MyWin();
}
}
JFrame에 바로 setBackground 설정이 안되고, 콘텐트팬을 가져와야 설정이 됐습니다.
색 이쁘네요
<2. BorderLayout>
api를 보면 BorderLayout의 생성자로 수평 수직 간격을 넣어줄 수 있습니다.
import javax.swing.*;
import java.awt.*;
class MyWin extends JFrame {
public MyWin() {
setTitle("BorderLayout Practice");
setSize(400, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contentPane = this.getContentPane();
contentPane.setBackground(Color.LIGHT_GRAY);
contentPane.setLayout(new BorderLayout(50, 5));
JButton north = new JButton("North");
JButton west = new JButton("West");
JButton center = new JButton("Center");
JButton east = new JButton("East");
JButton south = new JButton("South");
north.setBackground(Color.cyan);
west.setBackground(Color.green);
center.setBackground(Color.yellow);
east.setBackground(Color.red);
south.setBackground(Color.BLUE);
contentPane.add(north, BorderLayout.NORTH);
contentPane.add(west, BorderLayout.WEST);
contentPane.add(center, BorderLayout.CENTER);
contentPane.add(east, BorderLayout.EAST);
contentPane.add(south, BorderLayout.SOUTH);
setVisible(true);
}
}
public class BorderLayoutEx{
public static void main(String[] args) {
new MyWin();
}
}
<3. 산술문 출력 프로그램>
import javax.swing.*;
import java.awt.*;
class MyWin extends JFrame {
public MyWin() {
setTitle("BorderLayout Practice");
setSize(300, 100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contentPane = this.getContentPane();
contentPane.setBackground(Color.LIGHT_GRAY);
contentPane.setLayout(new FlowLayout());
JLabel calculate = new JLabel("100 + 200 ");
JButton equal = new JButton("=");
JLabel result = new JLabel("300");
contentPane.add(calculate);
contentPane.add(equal);
contentPane.add(result);
setVisible(true);
}
}
public class ex{
public static void main(String[] args) {
new MyWin();
}
}
아직 이벤트 처리를 안배워서.. 그냥 출력만 해봤습니다.
이렇게 하는 게 맞나 싶네여
<4. 버튼 배경색 설정>
import javax.swing.*;
import java.awt.*;
class MyWin extends JFrame {
public MyWin() {
setTitle("BorderLayout Practice");
setSize(500, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contentPane = this.getContentPane();
contentPane.setBackground(Color.LIGHT_GRAY);
contentPane.setLayout(new GridLayout(1, 10));
Color[] color = {Color.red, Color.orange, Color.YELLOW, Color.green,
Color.cyan, Color.blue, Color.magenta, Color.gray,
Color.pink, Color.lightGray};
for (int i =0; i<10; i++) {
JButton btn = new JButton(Integer.toString(i));
btn.setOpaque(true);
btn.setBackground(color[i]);
contentPane.add(btn);
}
setVisible(true);
}
}
public class colorEx {
public static void main(String[] args) {
new MyWin();
}
}
<5. 4x4판>
import javax.swing.*;
import java.awt.*;
class MyWin extends JFrame {
public MyWin() {
setTitle("BorderLayout Practice");
setSize(500, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contentPane = this.getContentPane();
contentPane.setBackground(Color.LIGHT_GRAY);
contentPane.setLayout(new GridLayout(4,4));
Color[] color = {Color.red, Color.orange, Color.YELLOW, Color.green,
Color.cyan, Color.blue, Color.magenta, Color.gray,
Color.pink, Color.lightGray, Color.DARK_GRAY, Color.WHITE,
Color.BLACK, Color.red, Color.orange, Color.YELLOW};
for (int i =0; i<16; i++) {
JButton btn = new JButton(Integer.toString(i));
btn.setOpaque(true);
btn.setBackground(color[i]);
contentPane.add(btn);
}
setVisible(true);
}
}
public class colorEx {
public static void main(String[] args) {
new MyWin();
}
}
Color클래스에는 색이 13개밖에 없더라고요.
그래서 중복되게 해줬습니다. 4번에서 쓴 배열을 그대로 이용했숴요
<6. 정수를 랜덤한 위치에 출력하는 스윙 프로그램>
import javax.swing.*;
import java.awt.*;
class MyWin extends JFrame {
private Container contentpane;
public MyWin() {
setTitle("Random Labels");
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 300);
contentpane = this.getContentPane();
contentpane.setLayout(null);
random_print();
}
private void random_print() {
for (int i=0; i<20; i++) {
JLabel label = new JLabel(Integer.toString(i));
int x = (int)(Math.random()*220) + 30;
int y = (int)(Math.random()*220) + 30;
label.setLocation(x, y);
label.setSize(20, 20);
label.setForeground(Color.magenta);
contentpane.add(label);
}
}
}
public class FlowLayoutEx{
public static void main(String[] args) {
new MyWin();
}
}
전 random_print라는 함수를 따로 만들어줬습니다.
<결과>
<7. 컨텐트팬에 3개의 패널을 부착한 프로그램>
처음 프로그램을 돌려보니 저렇게 JTextField가 너무 작았습니다ㅠㅠ
그래서 JTextField의 api를 찾아보니
JTextField 생성자로 열의 크기를 받을 수 있었습니다! (저는 처음에 new JTextField() 이렇게 설정해줬었습니다.)
그래서 수정한 결과
100은 너무 컸고 10이 딱 적당한 것 같습니다~
코드
import javax.swing.*;
import java.awt.*;
class CenterPanel extends JPanel {
public CenterPanel() {
setLayout(null);
random_print();
}
private void random_print() {
for (int i=0; i<10; i++) {
JLabel label = new JLabel("*");
int x = (int)(Math.random()*220) + 30;
int y = (int)(Math.random()*220) + 30;
label.setLocation(x, y);
label.setSize(20, 20);
label.setForeground(Color.magenta);
add(label);
}
}
}
class NorthPanel extends JPanel {
public NorthPanel() {
setLayout(new FlowLayout());
setBackground(Color.LIGHT_GRAY);
JButton relocate = new JButton("새로배치");
JButton finish = new JButton("종료");
relocate.setBackground(Color.yellow);
finish.setBackground(Color.red);
add(relocate);
add(finish);
}
}
class SouthPanel extends JPanel {
public SouthPanel() {
setLayout(new FlowLayout());
setBackground(Color.DARK_GRAY);
add(new JButton("별 개수 수정"));
add(new JTextField(10));
}
}
class MyWin extends JFrame {
private Container contentpane;
public MyWin() {
setTitle("Random Labels");
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 300);
contentpane = this.getContentPane();
contentpane.setLayout(new BorderLayout());
CenterPanel center = new CenterPanel();
NorthPanel north = new NorthPanel();
SouthPanel south = new SouthPanel();
contentpane.add(center, BorderLayout.CENTER);
contentpane.add(north, BorderLayout.NORTH);
contentpane.add(south, BorderLayout.SOUTH);
}
}
public class FlowLayoutEx{
public static void main(String[] args) {
new MyWin();
}
}
728x90
'프로그래밍 언어 > javastudy' 카테고리의 다른 글
만들다 만 계산기 (0) | 2021.07.21 |
---|---|
진법변환기 gui (0) | 2021.07.20 |
간단한 스윙 프로그램 만들기/ 명품 자바 에센셜 8 (0) | 2021.07.19 |
명품 Java Essential 7단원 Bonus 1 (0) | 2021.07.17 |
명품 Java Essential 7단원 실습문제 1~7 (0) | 2021.07.17 |