2014-02-05 81 views
1

我想提前用爱沙尼亚文而不是英文写这段代码而表示道歉。 我是Java初学者(到目前为止2-3小时的经验)。我正在尝试编写自定义的国际象棋表的代码(可定制大小)到目前为止,我已经能够为表格编写代码,但是我有着色它的问题。如何根据棋盘的正确颜色对桌子进行着色? 包esimene;Java国际象棋桌

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

名称变量英文请 –

+0

您可以多次使用'setColor'。 – johnchen902

回答

2

首先,让我告诉你,这是一个有点奇怪的方法来创建一个Java棋盘。但是,这也取决于你的目标 - 我想教育的原因,你应该继续:)

要使用Java Graphics用不同的颜色来画你必须在每个g.fillRect(...)g.drawRect(...)或任何其他绘画功能的前面使用g.setColor(SOME_COLOR);。这些功能总是使用“当前设置”颜色进行绘制。

+0

是的,这是教育目的。谢谢你这部分回答了我的问题。唯一的问题是如何在白棋和黑棋之间交换棋盘棋子? –

+0

@ArmidoMaamägi如果他回答了你的问题,那么请这样做,并接受他的回答 – diazazar

3

如果问题实际上是确定绘制单元格的颜色,最简单的方法是查看两个数字加起来是奇数还是偶数,然后相应地绘制单元格。

即用于

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

如果blackSquare设置然后漆小区中的一个的颜色,如果没有则绘制它的其他每个小区。

要实际设置颜色,只需在绘制正方形前进行适当的调用即可。

+0

谢谢,这正是我正在寻找的。我已经在python中使用过,但不知道如何在java中使用它。 –