반응형

문제

다음과 같은 GUI 모양을 가진 스윙 프레임을 작성하라. Open Challenge의 힌트나 정답을 참고하라. 버튼은 JButton, 텍스트 JLabel, 입력창은 JTextField를 사용하면 된다.

 

소스 코드

import javax.swing.*;
import java.awt.*;
public class Main7 extends JFrame{
	public Main7() {
		setTitle("계산기 프레임");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container c = getContentPane();
		c.setLayout(new BorderLayout());
		
		JPanel [] p = new JPanel[3];
		for(int i = 0;i<3;i++)
			p[i] = new JPanel();
		JLabel label = new JLabel("수식 입력");
		TextField tf = new TextField(20);
		p[0].setBackground(Color.LIGHT_GRAY);
		p[0].add(label);
		p[0].add(tf);
		
		c.add(p[0],BorderLayout.NORTH);
		
		p[1].setLayout(new GridLayout(4,4));
		JButton [] btn = new JButton[16];
		for(int i = 0;i<10;i++) {
			btn[i] = new JButton(Integer.toString(i));
			p[1].add(btn[i]);
		}
		btn[10] = new JButton("CE");
		btn[11] = new JButton("계산");
		btn[12] = new JButton("+");
		btn[13]	= new JButton("-");
		btn[14] = new JButton("x");
		btn[15] = new JButton("/");
		for(int i = 10;i<16;i++)
		{
			if(i > 11)
				btn[i].setBackground(Color.CYAN);
			p[1].add(btn[i]);
		}
		
		c.add(p[1],BorderLayout.CENTER);
		
		JLabel label2 = new JLabel("계산 결과");
		TextField tf2 = new TextField(20);
		p[2].setBackground(Color.yellow);
		
		p[2].add(label2);
		p[2].add(tf2);
		
		c.add(p[2],BorderLayout.SOUTH);
		
		setSize(300,300);
		setVisible(true);
	}
	public static void main(String[] args) {
		new Main7();
	}

}

반응형
반응형

문제

20개의 10 x 10 크기의 JLabel 컴포넌트가 프레임 내에 (50, 50) 위치에서 (250, 250) 영역에서 랜덤한 위치에 출력되도록 스윙 프로그램을 작성하라. 프레임의 크기를 300 X 300으로 하고, JLabel의 배경색은 모두 파란색으로 하라.

 

소스 코드

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

public class Main6 extends JFrame{
	public Main6() {
		setTitle("Random Labels");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container c = getContentPane();
		
		c.setLayout(null);
		JLabel [] label = new JLabel[20];
		
		for(int i = 0;i<20;i++) {
			label[i] = new JLabel();
			label[i].setBackground(Color.BLUE);
			int x = (int)(Math.random()*200)+50;
			int y = (int)(Math.random()*200)+50;
			label[i].setLocation(x, y);
			label[i].setSize(10,10);
			label[i].setOpaque(true);
			c.add(label[i]);
		}
		setSize(300,300);
		setVisible(true);
	}
	
	public static void main(String[] args)
	{
		new Main6();
	}
}

반응형
반응형

문제

GridLayout을 이용하여 다음 그림과 같이 Color.WHITE, Color.GRAY, Color.RED 등 16개의 색을 배경색으로 하는 4 x 4 바둑판을 구성하라.

 

소스 코드

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

public class Main5 extends JFrame{
	Color[] color = { Color.red, Color.ORANGE, Color.yellow, Color.green,
			Color.cyan, Color.blue, Color.magenta, Color.DARK_GRAY, Color.pink,
			Color.LIGHT_GRAY, Color.white, Color.black, Color.black, Color.orange,
			Color.blue, Color.magenta
	};
	public Main5() {
		setTitle("4x4 Color Frame");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container c = getContentPane();

		c.setLayout(new GridLayout(4,4));
		JLabel [] jlb = new JLabel[16];
		
		for(int i = 0;i<16;i++) {
			jlb[i] = new JLabel(Integer.toString(i));
			jlb[i].setOpaque(true);
			jlb[i].setBackground(color[i]);
			c.add(jlb[i]);
		}
		
		setSize(500,200);
		setVisible(true);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Main5();
	}

}

색깔이 맞는지는 모르겠네요..ㅎ

반응형

+ Recent posts