2014-02-05 80 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中使用它。 –