2013-01-15 1 views
1

편집 : 프로그램을 시작하면 체스 판이 그려지고 단추가 작동합니다. 그러나 체스 판을 내가 프로그램을 실행할 때가 아니라 버튼을 누를 때만 그려야합니다. 어떻게해야합니까? 나는 그것을 할 것자바로 버튼 페인트를 만드는 방법은 무엇입니까?

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

public class Male extends JFrame implements ActionListener {  
JFrame frame; 
JPanel DrawPanel; 
JButton button; 


public void Male() { 
frame = new JFrame(); 
button = new JButton("MALE"); 
button.addActionListener(this); 

MyDrawPanel DrawPanel = new MyDrawPanel(); 


frame.getContentPane().add(BorderLayout.SOUTH, button); 
frame.getContentPane().add(BorderLayout.CENTER, DrawPanel); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setSize(500,500); 
frame.setVisible(true); 

} 


public static void main(String[] args) { 
    Male gui = new Male(); 
    gui.Male(); 

} 
public void actionPerformed(ActionEvent event) { 
    frame.repaint(); 

} 
} 

class MyDrawPanel extends JPanel {  

public void paintComponent(Graphics g) { 
    g.setColor(Color.BLACK); 
    setBackground(Color.WHITE); 
    int x=0; 
    int y=0; 

    for (int i=0; i<32; i++){ 
    g.fillRect(x, y, 50, 50); 
    x = x + 100; 

    if (x == 400){ 
    x = 50; 
    y = y + 50; 
    }else if (x == 450){ 
    x = 0; 
    y = y + 50; 
    } 
    } 

} 
} 
+3

* "다음은 채울 공백이있는 코드입니다."* 시작되었습니다. 특정 * 질문을 할 수있을 때 우리에게 연락하십시오. –

+0

나는 아무에게도 공백을 채울 것을 요구하지 않고있다. 이클립스는 그것없이 컴파일되지 않기 때문에 내가 MainField 클래스를 그리면 클래스 MaleFrame에서 드로잉을 할 JButton을 만들어야하는지 알고 싶습니다. 나는 그것을 Male 클래스에 넣을 것이다. 그러나 어떤 공간도 없다. 그래서 나는 그것을 어디에 둘 수 있었느냐? –

+0

OK * "Java에서 버튼 페인트를 만드는 방법"*'actionPerformed (ActionEvent)'에서 사용자 정의 컴포넌트에 대해'repaint()'를 호출하십시오. –

답변

0

방법은 if ​​문에서 보드를 그리는 비트를 넣고 버튼을 클릭하면 true로 설정되는 부울 변수를 확인한다. 예를 들어

: 나는 자바에있는 버튼을 정말 잘 알고 아니에요

if(hasBeenPressed){ 
    // add drawing code here 
} 

그래서 난 정말 어떻게 완전히을 설정하는 방법을 말할 수 있지만, 나는 이것이 당신이 적어도 조금 도움이되기를 바랍니다 당신이하고 싶은 일을하는 것.

관련 문제