JButton Java JFrame
Формулировка задачи:
Как правильно приделать к вот такому коду парочку кнопок?
package praktika1;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
public class zadanie2 extends JFrame {
Color square1 = new Color(248, 244, 255);
Color square2 = new Color(0x000000);
Color cheker1 = new Color(0xF0FF9F);
Color cheker2 = new Color(0x170F33);
public void paint(Graphics g)
{
int row;
int col;
int x,y;
for ( row = 0; row < 8; row++ ) {
for ( col =0; col < 8; col++) {
x = col * 60+35;
y = row * 60+35;
if ( (row % 2) == (col % 2) )
g.setColor(square1);
else
g.setColor(square2);
g.fillRect(x, y,60, 60);
}
}
for ( row = 0; row < 3; row++ ) {
for ( col =0; col < 8; col++) {
if ( (row % 2) == (col % 2) ){
x = col * 60+45;
y = row * 60+350;
g.setColor(cheker1);
g.fillOval(x, y, 40,40);}
}
}
for ( row = 0; row < 3; row++ ) {
for ( col =0; col < 8; col++) {
if ( (row % 2) != (col % 2) ){
x = col * 60+45;
y = row * 60+45;
g.setColor(cheker2);
g.fillOval(x, y, 40,40);}
}
}
}
public static void main(String args[]) {
zadanie2 check = new zadanie2();
check.setTitle("Шашки");
check.setSize(600,600);
check.setDefaultCloseOperation(EXIT_ON_CLOSE);
check.setVisible(true);
}
}Решение задачи: «JButton Java JFrame»
textual
Листинг программы
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
public class zadanie2 extends JFrame {
//Константы цветов
final Color COLOR_SQUARE1 = new Color(248, 244, 255);
final Color COLOR_SQUARE2 = new Color(0x000000);
final Color COLOR_SQUARE3 = new Color(255, 0, 0);
final Color COLOR_SQUARE4 = new Color(255,255,0);
final Color COLOR_CHEAKER1 = new Color(0xF0FF9F);
final Color COLOR_CHEAKER2 = new Color(0x170F33);
final Color COLOR_CHEAKER3 = new Color(0,0,255);
final Color COLOR_CHEAKER4 = new Color(255,0,255);
Color square1 = COLOR_SQUARE1;
Color square2 = COLOR_SQUARE2;
Color cheker1 = COLOR_CHEAKER1;
Color cheker2 = COLOR_CHEAKER2;
//Панель с полем
ChekerPanel chekerPanel = new ChekerPanel();
//Кнопки
JButton changeColor=new JButton("Change Color");
JButton changeColorCheker=new JButton("Change color cheker");
JButton changeCheker=new JButton("Change cheker");
//Создаем конструктор
public zadanie2(){
//Убираем менеджер расположения
setLayout(null);
//Устанавливаем кнопки и панель в определенное место
changeColor.setBounds(530, 50, 120, 25);
changeColorCheker.setBounds(530, 100, 120, 25);
changeCheker.setBounds(530, 150, 120, 25);
chekerPanel.setBounds(0, 0, 550, 600);
//Изменяем цвет поля по нажатию на кнопку
changeColor.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
if (square1.equals(COLOR_SQUARE1)) {
square1 = COLOR_SQUARE3;
square2 = COLOR_SQUARE4;
repaint();
} else {
square1 = COLOR_SQUARE1;
square2 = COLOR_SQUARE2;
repaint();
}
}
});
//Изменяем цвет шашек
changeColorCheker.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
if (cheker1.equals(COLOR_CHEAKER1)) {
cheker1 = COLOR_CHEAKER3;
cheker2 = COLOR_CHEAKER4;
repaint();
} else {
cheker1 = COLOR_CHEAKER1;
cheker2 = COLOR_CHEAKER2;
repaint();
}
}
});
//Добавляем на фрейм кнопки и панель
add(changeColor);
add(changeColorCheker);
add(changeCheker);
add(chekerPanel);
}
public static void main(String args[]) {
zadanie2 check = new zadanie2();
check.setTitle("Шашки");
check.setSize(680,600);
check.setDefaultCloseOperation(EXIT_ON_CLOSE);
check.setVisible(true);
}
//Внутренний класс с панелью
private class ChekerPanel extends JPanel{
public ChekerPanel() {
}
public void paint(Graphics g)
{
int row;
int col;
int x,y;
for ( row = 0; row < 8; row++ ) {
for ( col =0; col < 8; col++) {
x = col * 60+35;
y = row * 60+35;
if ( (row % 2) == (col % 2) )
g.setColor(square1);
else
g.setColor(square2);
g.fillRect(x, y,60, 60);
}
}
for ( row = 0; row < 3; row++ ) {
for ( col =0; col < 8; col++) {
if ( (row % 2) == (col % 2) ){
x = col * 60+45;
y = row * 60+350;
g.setColor(cheker1);
g.fillOval(x, y, 40,40);}
}
}
for ( row = 0; row < 3; row++ ) {
for ( col =0; col < 8; col++) {
if ( (row % 2) != (col % 2) ){
x = col * 60+45;
y = row * 60+45;
g.setColor(cheker2);
g.fillOval(x, y, 40,40);}
}
}
}
}
}