제가 원하는 그림은 <div>Tic-Tac-Toe 게임과</div> <div>그 아래 다른 패널로</div> <div>동그란 원이 두개 왔다갔다 하는 형태가 합쳐져서 한 프레임안에 나오기를 원하고 있는데요</div> <div><br></div> <div>자꾸 화면이 겹치고 끊기고 그러는데 <span style="font-size:9pt;">어디가 문제인지 잘 모르겠습니다.</span></div> <div><br></div> <div>아래는 코드입니다.</div> <div><div><span style="font-size:9pt;">//</span></div> <div>class YouPanel extends JPanel implements ActionListener{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> private JButton[][] buttons = new JButton[3][3];<span class="Apple-tab-span" style="white-space:pre;"> </span>// 3x3 빙고 위치</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> private int time=-1;<span class="Apple-tab-span" style="white-space:pre;"> </span>// 리셋 값</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> private char turn = 'X';<span class="Apple-tab-span" style="white-space:pre;"> </span>//현재 표시할 모양 X,O인지 구분</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> public JButton resetButton = new JButton("시작!!!");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> private JLabel resetLabel =new JLabel("리셋 횟수:"+"0");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> private JLabel whoIsWinner =new JLabel(" ");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> public YouPanel() {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> setSize(1000, 350);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> setVisible(true);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> setLayout(new GridLayout(0, 3, 5, 5));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> Font f = new Font("Dialog", Font.ITALIC, 50);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> for (int i = 0; i < 3; i++) </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> <span class="Apple-tab-span" style="white-space:pre;"> </span> for (int j = 0; j < 3; j++) </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> <span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> <span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[i][j] = new JButton(" ");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> <span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[i][j].setFont(f);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> <span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[i][j].addActionListener(this);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> <span class="Apple-tab-span" style="white-space:pre;"> </span> add(buttons[i][j]); </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> <span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> //</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> for (int i = 0; i < 3; i++)<span class="Apple-tab-span" style="white-space:pre;"> </span>//시작 전 Tic-Tae-Toe 모양 띄워주기 </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[i][0].setText("T");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[0][1].setText("I");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[0][2].setText("C");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[1][1].setText("A");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[1][2].setText("C");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[2][1].setText("O");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[2][2].setText("E");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> resetButton.setFont(new Font("Dialog", Font.BOLD,15));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> resetButton.setBackground(new Color(150,50,70));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> add(resetButton);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> add(resetLabel);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> add(whoIsWinner);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> resetButton.addActionListener(this);<span class="Apple-tab-span" style="white-space:pre;"> </span>//리스너 및 버튼,라벨 부착</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> @Override</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> public void actionPerformed(ActionEvent e) {<span class="Apple-tab-span" style="white-space:pre;"> </span>//마우스 클릭 리스너 오버라이딩</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> for (int i = 0; i < 3; i++) { //For문 돌리기</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> for (int j = 0; j < 3; j++) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> if (e.getSource() == buttons[i][j] // 눌린 버튼이 공백인지 아닌지 확인하기</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> && buttons[i][j].getText().equals(" ") == true) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> if (turn == 'X') { //X일 경우</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[i][j].setText("X");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> turn = 'O';</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> if (checkWin("X", i, j))</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> System.out.println("X가 이겼음!");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> whoIsWinner.setText("X가 이겼음!");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> else if (isDraw()) </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> System.out.println("비겼습니다.");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> whoIsWinner.setText("비겼습니다.");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> } else {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[i][j].setText("O");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> turn = 'X';</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> if (checkWin("O", i, j))</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> System.out.println("O가 이겼음!");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> whoIsWinner.setText("O가 이겼음!");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> else if (isDraw())</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> System.out.println("비겼습니다.");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> whoIsWinner.setText("비겼습니다.");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> if(e.getSource()==resetButton){ //초기화 하는 버튼</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> for (int i = 0; i < 3; i++) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> for (int j = 0; j < 3; j++) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[i][j].setText(" ");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[i][j].setBackground(null);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> resetButton.setText("리셋");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> time++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> resetLabel.setText("리셋 횟수:"+time);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> turn='X';</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> whoIsWinner.setText(" ");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> public boolean isDraw() {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> for (int row = 0; row < 3; ++row) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> for (int col = 0; col < 3; ++col) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> if (buttons[row][col].getText().equals(" ")) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> return false;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> return true;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> public boolean checkWin(String mark, int r, int c)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> { </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> if(buttons[r][0].getText().equals(mark)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> && buttons[r][1].getText().equals(mark)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> && buttons[r][2].getText().equals(mark))</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> for(int i=0;i<3;i++)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[r][i].setBackground(new Color(0,0,255)); </div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> return true;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> else if(buttons[0][c].getText().equals(mark)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> && buttons[1][c].getText().equals(mark)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> && buttons[2][c].getText().equals(mark))</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> for(int i=0;i<3;i++)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[i][c].setBackground(new Color(0,0,255));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> return true;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> else if(</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[0][0].getText().equals(mark)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> && buttons[1][1].getText().equals(mark)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> && buttons[2][2].getText().equals(mark))</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[0][0].setBackground(new Color(0,0,255));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[1][1].setBackground(new Color(0,0,255));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[2][2].setBackground(new Color(0,0,255));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> return true;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> else if(</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[0][2].getText().equals(mark)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> && buttons[1][1].getText().equals(mark)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> && buttons[2][0].getText().equals(mark))</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[0][2].setBackground(new Color(0,0,255));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[1][1].setBackground(new Color(0,0,255));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> buttons[2][0].setBackground(new Color(0,0,255));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> return true;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> else{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> <span class="Apple-tab-span" style="white-space:pre;"> </span> return false;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> <span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span> }</div> <div>}</div> <div><br></div> <div>//</div> <div><br></div> <div><br></div> <div><br></div> <div>class Ball{<span class="Apple-tab-span" style="white-space:pre;"> </span>//띄워줄 볼</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private int x=100;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private int y=100;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private int size=30;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private int xSpeed=10;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public Ball(int x,int y)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>this.x=x;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>this.y=y;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public void draw(Graphics g)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>g.setColor(Color.BLUE);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>g.fillOval(x, y, size, size);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public void update()</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>x+=xSpeed*0.3*Math.random();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if((x+size)>MyPanel.BOARD_WIDTH-size||x<0)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>xSpeed=-xSpeed;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div>}</div> <div><br></div> <div><br></div> <div>public class MyPanel extends JPanel<span class="Apple-tab-span" style="white-space:pre;"> </span>//볼을 사용해서 만들 패널</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>static final int BOARD_WIDTH=600;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>static final int BOARD_HEIGHT=500;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private Ball ball=new Ball(100,100);<span class="Apple-tab-span" style="white-space:pre;"> </span>//공1의 위치지정</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>private Ball ball2=new Ball(100,150);<span class="Apple-tab-span" style="white-space:pre;"> </span>//공2의 위치지정</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public MyPanel()</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>//this.setBackground(Color.GRAY);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>Runnable task=()->{<span class="Apple-tab-span" style="white-space:pre;"> </span>//Thread 설정</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>while(true)</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>ball.update();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>ball2.update();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>repaint();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>try{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>Thread.sleep(50);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>} catch(InterruptedException ignore){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>};</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>new Thread(task).start();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>@Override</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>protected void paintComponent(Graphics g)<span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>super.paintComponent(g);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>ball.draw(g);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>ball2.draw(g);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>public static void main(String[] args)<span class="Apple-tab-span" style="white-space:pre;"> </span>//Main</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>JFrame frame= new JFrame();</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>frame.setSize(1000, 1000);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>frame.setSize(MyPanel.BOARD_WIDTH,MyPanel.BOARD_HEIGHT);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>frame.setVisible(true);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>frame.add(new YouPanel());</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>frame.add(new MyPanel());</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div>}</div></div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.