2014-02-05 2 views
1

Я хотел бы извиниться заранее за написание этого кода на эстонском языке, а не на английском языке. Я начинаю на Java (2-3 часа опыта до сих пор). Я пытаюсь написать код для настраиваемой таблицы шахмат. (Размер настраиваемый) До сих пор я мог писать код для таблицы, но у меня проблема с его раскраской. Как мне покрасить таблицу в соответствии с правильными цветами шахматной таблицы? упаковка эзимен;Таблица шахмат 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

имя переменные english please –

+0

Вы можете использовать 'setColor' несколько раз. – johnchen902

ответ

2

Прежде всего позвольте мне сказать вам, что это несколько странный подход к созданию шахматной доски на Java. Но это также зависит от вашей цели - я думаю, для образовательных целей, вы должны продолжать :)

Чтобы использовать Java Graphics рисовать разные цветы, вы должны использовать g.setColor(SOME_COLOR); перед каждым g.fillRect(...) или g.drawRect(...) или любой другой функции рисования. Эти функции всегда рисуются цветом «в настоящее время».

+0

Да, это в образовательных целях. Спасибо, что частично ответил на мой вопрос. Вопрос только в том, как поменять местами между белым и черным, как на шахматной доске? –

+0

@ ArmidoMaamägi, если он ответил на ваш вопрос, тогда, пожалуйста, сделайте это и примите его ответ – diazazar

3

Если проблема на самом деле определяет, какой цвет для рисования ячейки, самым простым способом является просмотр того, являются ли два числа, добавленные вместе, нечетным числом или четным числом и соответствующим образом окрашивают ячейку.

т.е. для каждой ячейки

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

Если blackSquare установлен затем покрасить клетки одного цвета, если нет, то красить его другой.

Чтобы установить цвет, просто сделайте соответствующий вызов перед покраской квадрата.

+0

Спасибо, это именно то, что я искал. Я использовал это в python, но не знал, как использовать его в java. –

 Смежные вопросы

  • Нет связанных вопросов^_^