1.
(pp. 466) KeyPad를 클릭한 버튼의 숫자만 출력되도록 수정
1 2 3 4 5 | @Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); txt.setText(txt.getText() + actionCommand); } |
1 2 3 4 5 | @Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); txt.setText(actionCommand); } |
txt.getText()를 지우면 된다.
(pp. 468) Puzzle의 reset 구현
1 2 3 4 5 6 7 8 9 10 11 | reset = new MyButton("reset"); reset.setBackground(Color.red); reset.setForeground(Color.yellow); add(reset, BorderLayout.SOUTH); reset.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for(int i=0; i<8; i++) buttons[i].setText(""+(i+1)); buttons[8].setText(" "); } }); |
< reset 버튼 클릭 >
reset.addActionListener(new ActionListener() { //무명 클랙스 사용
public void actionPerformed(ActionEvent e) {
for(int i=0; i<8; i++)
buttons[i].setText(""+(i+1)); //버튼의 숫자를 바꿉니다.
buttons[8].setText(" "); //마지막버튼 공백으로 처리
}
});
(pp. 472) RockPaperScissor의 TextFeild를 JLabel로 바꾸기
private JLabel output;
private JLabel information;
private JButton rock;
private JButton paper;
private JButton scissor;
public RockPaperScissor() {
setTitle("가위, 바위, 보");
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
panel =new JPanel();
panel.setLayout(new GridLayout(0, 3));
information =new JLabel("아래의 버튼 중에서 하나를 클릭하시오!");
output =new JLabel(" ");
(pp. 492) 화면에 사각형 그리기에서 사각형의 크기를 임의로 정해서 그리도록 수정 *난수 생성기 사용
@Override
publicvoid mousePressed(MouseEvent e)
{
Random random =newRandom();
if (index >100)
return;
array[index] =new Rectangle();
array[index].x = e.getX();
array[index].y = e.getY();
array[index].w = random.nextInt(200); //랜덤 함수 사용
array[index].h = random.nextInt(200); //랜덤 함수 사용
index++;
repaint();}
publicvoid paintComponent(Graphics g) {
super.paintComponent(g);
Random random =newRandom();
int computer = random.nextInt(3);
g.setColor(color);
for (Rectangle r : array)
if (r !=null)
if(computer ==0)
{
g.drawRect(r.x, r.y, r.w, r.h);
}
elseif (computer ==1)
{
g.drawOval(r.x, r.y, r.w, r.h);
}
else
{
g.drawLine(r.x, r.y, random.nextInt(200), random.nextInt(200));
}
}
@Override
publicvoid mousePressed(MouseEvent e) {
Random random =newRandom();
if (index >100)
return;
array[index] =new Rectangle();
array[index].x = e.getX();
array[index].y = e.getY();
array[index].w = random.nextInt(200);
array[index].h = random.nextInt(200);
index++;
color =new Color((int) (Math.random() *255.0),
(int) (Math.random() *255.0), (int) (Math.random() *255.0));
repaint();
}
랜덤함수를 써 도형과 색을 바꾸게 했습니다.
(pp. 522) SnowManFace에 버튼을 추가하고 이 버튼이 눌리면 찡그린 얼굴로 변경되도록 소스를 수정
class MyPanel2 extends JPanel { //패널을 생성
publicvoid paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillOval(25, 30, 200, 200);
g.setColor(Color.BLACK);
g.drawArc(60, 80, 50, 50, -180, 180); // 왼쪽 눈
g.drawArc(150, 80, 50, 50, -180, 180); // 오른쪽 눈
g.drawArc(75, 130, 100, 70, 180, -180); // 입
} //찡그린 얼굴
}
publicclass SnowManFace extends JFrame implementsActionListener{ // 상속
JButton button;
public SnowManFace() {
setSize(280, 350);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("눈사람 얼굴");
add(new MyPanel());
button =new JButton("색상 변경"); //버튼 추가
add(button, BorderLayout.SOUTH);
button.addActionListener(this); //액션리스너 추가
setVisible(true);
}
publicvoid actionPerformed(ActionEvent e) {
add(new MyPanel2()); //패널 2를 실행
setVisible(true);
}
(pp. 542) GrayScaleImage에서 색상 성분의 평균값(22라인 avg)이 정해진 값(threshold라 하자) 보다 작으면 avg=0으로 수정 한 후 결과를 설명하기
* threshold = 100, 150, 200 등으로 바꾸어가며 실행한 결과를 분석
int threshold =200; // 150 // 100
if(avg < threshold)
{
avg =0;
Color newColor =new Color(avg, avg, avg);
image.setRGB(r, c, newColor.getRGB());
}
else
{
Color newColor =new Color(avg, avg, avg);
image.setRGB(r, c, newColor.getRGB());
}
|
|
|
100 | 150 | 200 |
각 높이 너비의 픽셀의 평균값이 threshold보다 작으면 avg들은 (0,0,0)이 되기 때문에 회색에서 검정색으로 변합니다.
0~255이기 때문에 > 100, > 150, > 200 이면 검정색으로 바뀝니다.
'대학교 > 2.객체지향프로그래밍_JAVA' 카테고리의 다른 글
OOP.종합설계 (0) | 2017.06.16 |
---|---|
문자열을 이용해 정수인지 실수인지 판별 (0) | 2017.04.21 |
지뢰찾기(주변 숫자 탐색) (0) | 2017.04.21 |
Tic_Tac_Toe(틱택토) 게임 (0) | 2017.04.21 |
극장 예매 시스템 (0) | 2017.04.21 |