Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 안드로이드스튜디오
- Java
- Servlet 멀티 스레딩
- ApplicationContext란
- Servlet Container란
- layout
- Servlet과 Thread
- elasticSearch
- 인텔리제이
- ElasticSearch NGram
- 동의어 파일
- ElasticSearch 동의어 파일
- ElasticSearch 토큰필터
- 안드로이드
- ElasticSearch Shingle
- 토큰필터
- Spring Servlet이란
- 계산기
- Spring Handler
- Bean Factory란
- Servlet Life Cycle
- H2 DB
- ElasticSearch 동의어 사전
- H2
- spring 장점
- ElasticSearch EdgeNGram
- Dispathcher Servlet이란
- 자바
- ContextLoaderListener란
- Spring Container란
Archives
- Today
- Total
결국 무엇이든 해내는 사람
Day 15 - frame 응용, 도형그리기 ,움직이기 본문
반응형
package frame_Random_ball;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class Control {
public Control() {
Frame fr=new Frame();
setLayout(fr);
MyCanvas cv = new MyCanvas(100,100);
cv.setSize(600,600);
cv.setLocation(0,0);
fr.add(cv);
fr.setVisible(true);
}
public void setLayout(Frame frame) {
//중앙에 위치
Dimension res = Toolkit.getDefaultToolkit().getScreenSize();
System.out.println("해상도 : " + res.width + " x " + res.height);
int frame_width = 600;
int frame_height = 600;
frame.setSize(frame_width, frame_height);
frame.setLocation(res.width / 2 - frame_width / 2, res.height / 2 - frame_height / 2);
frame.setLayout(null);
//
frame.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
});
}
}
package frame_Random_ball;
public class Main {
public static void main(String[] args) {
//원이 왓다리갔다리 쓰레드 활용
Control ct= new Control();
}
}
package frame_Random_ball;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
public class MyCanvas extends Canvas {
int posX = 0;
int posY = 0;
int speedX = 8;
int speedY = 15;
MoveLeftRight th;
Image bufferImage;
Graphics buffg;
public MyCanvas(int posX,int posY) {
this.posX =posX;
this.posY=posY;
th = new MoveLeftRight();
th.start();
}
@Override
public void paint(Graphics g) {
if (buffg == null) {
bufferImage = createImage(getWidth(), getHeight());
if (bufferImage == null)
System.out.println("생성 실패");
else
buffg = bufferImage.getGraphics();
}
// g2.fillOval(posX, 300, 50, 50);
}
@Override
public void update(Graphics g) {
buffg.drawImage(bufferImage, 0, 0, this);// 버퍼세팅
//
buffg.setColor(new Color(41, 128, 185));
buffg.fillRect(0, 0, getWidth(), getHeight());
//
buffg.setColor(Color.red);
buffg.fillOval(this.posX, this.posY, 50, 50);
// buffg.fillOval(100, 100, 50, 50);
g.drawImage(bufferImage, 0, 0, this); // 버퍼에있는거 그려주기
} // 43번쨰 줄부터 52번쨰줄은 껌뻑거림을 없애기위한 코드 , 이해할 필요는 없고 buffg 변수 뒤에 세팅값은
// 기존의 canvas 그리듯 사용하면 됨. 실제로 깜빡거림 방지는 요즘 기술에는 구현되어있어서 굳이 깊게 안봐도댐
class MoveLeftRight extends Thread {
// 좌우 왓다리 갔다리 , 숫자는 프레임창의 크기 값 - 동그라미크기(50) 을 뺴준값
@Override
public void run() {
while (true) {
posX += speedX;
posY+=speedY;
if (posX > getWidth() - 50 || posX < 0) {
speedX *= -1;
}
if (posY> getHeight() - 50 || posY < 0) {
speedY *= -1;
}
repaint();
try {
Thread.sleep(5);
} catch (Exception e) {
System.out.println(e);
}
}
}
}
}
반응형
'두서없는 공부 노트 > JAVA' 카테고리의 다른 글
Day 15 - frame을 더 응용해서 , 공을 여러개 돌려보기 (0) | 2020.09.03 |
---|---|
Day 15 - frame 응용, 도형그리기 ,움직이기(객체지향적 설계) (0) | 2020.09.03 |
Day 15 - 자바 Frame을 이용하여 화면 중앙에 창 띄우기, 도형 , 선 그리기 (0) | 2020.09.03 |
Day 14 - 쓰레드를 이용하여 동기화를 수행해보자 (Syncronized) (0) | 2020.09.02 |
Day 14 - 은행계좌를 이용한 간단한 쓰레드 예제 (0) | 2020.09.02 |
Comments