2014-02-05 5 views
1

에스토니아어로이 코드를 작성한 것에 대해 사과드립니다. 저는 초보자입니다 (2 ~ 3 시간 경험). 사용자 지정 가능한 체스 테이블에 대한 코드를 작성하려고합니다. (사용자 지정 가능한 크기) 지금까지 테이블에 대한 코드를 작성할 수 있었지만 색칠하는 데 문제가 있습니다. 체스 테이블의 색상에 따라 테이블 색을 어떻게 지정합니까? 패키지 esimene;자바 체스 테이블

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.GridLayout; 
import java.awt.Label; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JCheckBox; 
import javax.swing.JColorChooser; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class Joonistame4 extends JComponent implements ActionListener{ 

int suurus = 10; 
int korgus = 10; 
int x = 50; 
int y = 50; 
JTextField tf = new JTextField(String.valueOf(suurus)); 
JTextField tf2 = new JTextField(String.valueOf(korgus)); 
JColorChooser varvivalik = new JColorChooser(); 
JPanel p = new JPanel(new GridLayout(3,2)); //rida , veerg 
JCheckBox cb = new JCheckBox(); 


public Joonistame4(){ 
    setLayout(new BorderLayout()); 
    p.add(new Label("suurus: ")); 
    p.add(tf); 

    add(p, BorderLayout.SOUTH); 
    //add(varvivalik, BorderLayout.EAST); 
    tf.addActionListener(this); 
    cb.addActionListener(this); 
    varvivalik.setPreviewPanel(new JPanel()); 
} 

public void paintComponent(Graphics g){ 

    int suurus_kokku = 8*suurus; 
    g.setColor(Color.BLUE); 
    for(int x = suurus; x < suurus_kokku; x = x+suurus) { 

     for(int y = suurus; y < suurus_kokku; y = y+suurus) { 
      if(cb.isSelected()){ 
       g.fillRect(50, 50, suurus, suurus); 
      }else{ 
       g.drawRect(50+y, 50+x, suurus, suurus); 
       }  
      } 

    } 
} 



public static void main(String[] args) { 
    JFrame aken = new JFrame("Esimene aken"); 
    aken.setSize(600, 600); 
    aken.getContentPane().add(new Joonistame4()); 
    aken.setVisible(true); 
    aken.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

public void actionPerformed(ActionEvent arg0) { 
    suurus = Integer.parseInt(tf.getText()); 
    repaint(); 

} 

} 
+1

관련 부분 만 게시하십시오. – Maroun

+0

이름 변수 english please –

+0

'setColor'를 여러 번 사용할 수 있습니다. – johnchen902

답변

2

처음에는 이것이 자바로 체스 판을 만드는 다소 이상한 접근이라고 알려드립니다. 그러나 그것은 또한 당신의 목표에 따라 달라집니다 - 나는 교육 이유로 당신은 당신이 각 g.fillRect(...) 또는 g.drawRect(...) 또는 기타 페인팅 기능의 앞에 g.setColor(SOME_COLOR);을 사용해야합니다 :)

은 다른 색상으로 그립니다 Java Graphics를 계속 사용해야합니다 같아요. 이러한 함수는 항상 "현재 설정된"색으로 칠합니다.

+0

예 교육적인 목적입니다. 제 질문에 부분적으로 대답 해 주셔서 감사합니다. 질문은 체스 보드에있는 것처럼 흰색과 검은 색을 어떻게 바꿀 수 있습니까? –

+0

@ ArmidoMaamägi 그가 당신의 질문에 대답했다면, 그렇게하고 대답을 수락하십시오 – diazazar

3

문제가 실제로 셀을 페인트 할 색을 결정하는 경우 가장 쉬운 방법은 함께 추가 된 두 숫자가 홀수인지 짝수인지 확인하고 이에 따라 셀을 페인트하는 것입니다. blackSquare가 설정 한 후 그것을 다른 페인트하지 않을 경우, 상기 셀을 하나의 컬러 도료

boolean blackSquare = (x+y)%2==0; 

경우 각 셀

즉.

실제로 색을 설정하려면 사각형을 그리기 전에 적절한 호출을 만드십시오.

+0

고마워요. 제가 찾던 바로 그 것입니다. 나는 이것을 파이썬에서 사용했지만, 자바에서 사용하는 방법을 모른다. –