mojo's Blog
명품 JAVA Programming 제 11장 실습문제 10번 본문
0에서 9까지의 숫자를 가진 레이블 컴포넌트를 10개 만들어서 이들을 프레임 내의 랜덤한 위치에 배치한다.
사용자가 0~9 순서대로 클릭하여 10개를 모두 클릭하면 다시 10개의 레이블을 랜덤한 위치로 배치한다.
클릭된 컴포넌트는 화면에서 보이지 않게 하며 반드시 번호 순서로 클릭되게 해야한다.
코드
import javax.swing.*; // JFrame
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*; // Container
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Vector;
import java.awt.*;
public class MyFrame extends JFrame{
private static JLabel []jl=new JLabel[10];
private static int click_Cnt=0;
static void setLabel(Container c) {
for(int i=0; i<jl.length; i++) {
jl[i]=new JLabel(Integer.toString(i));
jl[i].setSize(30,30);
jl[i].setFont(new Font("Arial",Font.PLAIN,30));
jl[i].setForeground(Color.PINK);
int x=(int)(Math.random()*300+20);
int y=(int)(Math.random()*300+20);
jl[i].setLocation(x,y);
c.add(jl[i]);
}
}
static void reSetLabel(Container c) {
click_Cnt=0;
for(int i=0;i<jl.length;i++) {
jl[i].setSize(30,30);
int x=(int)(Math.random()*300+20);
int y=(int)(Math.random()*300+20);
jl[i].setLocation(x,y);
}
}
MyFrame(){
setTitle("11장 실습문제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(null);
setLabel(c);
for(int i=0;i<jl.length;i++) {
jl[i].addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) { // mouse를 누른 경우
// TODO Auto-generated method stub
JLabel la=(JLabel)e.getSource();
if(click_Cnt==Integer.parseInt(la.getText())) {
la.setSize(0,0);
click_Cnt++;
if(click_Cnt==10) {
reSetLabel(c);
}
}
}
});
}
setSize(400, 400); // 프레임 크기 300x300
setVisible(true); // 프레임 출력
c.setFocusable(true);
c.requestFocus();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyFrame();
}
}
'Java' 카테고리의 다른 글
도형 그리기와 칠하기 (0) | 2021.08.04 |
---|---|
JPanel을 상속받아 도형 그리기 / drawString() 메소드 이용 (0) | 2021.08.03 |
명품 JAVA Programming 제 11장 실습문제 6번 (0) | 2021.07.29 |
명품 JAVA Programming 제 11장 Open Challenge (0) | 2021.07.29 |
JSlider, 슬라이더 컴포넌트 (0) | 2021.07.29 |
Comments