문제풀이/명품 자바 프로그래밍(개정4판)

명품 자바 프로그래밍(개정4판) 제 13장 실습문제 1~4번

Hyeon-Uk 2020. 12. 8. 00:08
반응형

[1번]

import java.util.Scanner;

class myth implements Runnable{
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("스레드 시작");
		for(int i=0;i<10;i++) {
			System.out.print(i+1+" ");
		}
		System.out.println();
		System.out.println("스레드 종료");
	}
}


public class p1301 {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Thread th=new Thread(new myth());
		Scanner sc=new Scanner(System.in);
		System.out.print("아무 키나 입력>> ");
		sc.nextLine();
		th.run();
	}
}


[2번]

import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Scanner;

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

class MyPanel extends JPanel{
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.setColor(Color.magenta);
		int x=(int)(Math.random()*300);
		int y=(int)(Math.random()*300);
		g.drawOval(x, y, 50, 50);
	}
}

class myThread extends Thread{
	MyPanel jp;
	public myThread(MyPanel j) {
		jp=j;
	}
	public void run() {
		while(true) {
			try {
				sleep(500);
				jp.repaint();
			} catch (Exception e) {
				return;
			}
		}
	}
}

class myFrame extends JFrame{
	MyPanel myp=new MyPanel();
	myThread th=new myThread(myp);
	public myFrame() {
		setTitle("원을 0.5초 간격으로 이동하는 frame");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setContentPane(myp);
		myp.setLayout(null);
		myp.setOpaque(true);
		myp.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				th.start();
			}
		});
		
		
		setVisible(true);
		setSize(500,500);
	}
}

public class p1302 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new myFrame();
	}
}


반응형

[3번]

import java.awt.Container;
import java.awt.FlowLayout;
import java.util.Calendar;

import javax.swing.JFrame;
import javax.swing.JLabel;

class myth extends Thread{
	JLabel clock;
	public myth(JLabel clock) {
		this.clock=clock;
	}
	
	public void run() {
		while(true) {
			try {
			Calendar c=Calendar.getInstance();
			int hour=c.get(Calendar.HOUR_OF_DAY);
			int min=c.get(Calendar.MINUTE);
			int sec=c.get(Calendar.SECOND);
			
			String clockText=Integer.toString(hour);
			clockText=clockText.concat(":");
			clockText=clockText.concat(Integer.toString(min));
			clockText=clockText.concat(":");
			clockText=clockText.concat(Integer.toString(sec));
					
			clock.setText(clockText);
			sleep(1000);
			}catch(Exception e) {
				return;
			}
		}
	}
}

class myFrame extends JFrame{
	JLabel clock=new JLabel();
	public myFrame() {
		setTitle("디지털 시계 만들기");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container c=getContentPane();
		c.setLayout(new FlowLayout());
		
		myth th=new myth(clock);
		c.add(clock);
		
		th.start();
		setVisible(true);
		setSize(500,500);
	}
}

public class p1303 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new myFrame();
	}
}


[4-1번]

import java.awt.Container;
import java.awt.FlowLayout;
import java.util.Calendar;

import javax.swing.JFrame;
import javax.swing.JLabel;

class myth extends Thread{
	JFrame jf;
	int x=300;
	public myth(JFrame jf) {
		this.jf=jf;
	}
	
	public void run() {
		while(true) {
			try {
				if(x==300) x=330;
				else x=300;
				jf.setLocation(x,x);
				sleep(100);
			}catch(Exception e) {
				return;
			}
		}
	}
}

class myFrame extends JFrame{
	public myFrame() {
		setTitle("진동하는 프레임 만들기");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		myth th=new myth(this);
		th.start();
		setVisible(true);
		setSize(500,500);
	}
}

public class p1304 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new myFrame();
	}
}


[4-2번]

import java.awt.Container;
import java.awt.FlowLayout;
import java.util.Calendar;

import javax.swing.JFrame;
import javax.swing.JLabel;

class myth extends Thread{
	JLabel jf;
	int x=300;
	public myth(JLabel jf) {
		this.jf=jf;
	}
	
	public void run() {
		while(true) {
			try {
				if(x==100) x=130;
				else x=100;
				jf.setLocation(x,x);
				sleep(100);
			}catch(Exception e) {
				return;
			}
		}
	}
}

class myFrame extends JFrame{
	JLabel jl=new JLabel("진동 레이블");
	public myFrame() {
		setTitle("진동하는 레이블 만들기");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(null);
		
		jl.setBounds(100,100,200,300);
		add(jl);
		myth th=new myth(jl);
		th.start();
		setVisible(true);
		setSize(500,500);
	}
}

public class p1304 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new myFrame();
	}
}

 

반응형