Извините, я спрашивал об этом раньше, но я переделал и упростил свой код до такой степени, что я думал, что он заслуживает отдельного поста.
Что мой код делает в настоящее время: Создает 3 экземпляракласс кнопки, помещает их в JPanel.Каждый раз, когда нажимается кнопка, количество нажатий увеличивается и устанавливается в качестве текста кнопки.Цвет кнопки остается прежним (за исключением первого щелчка).
Что я хочу, чтобы мой код делал: после первого щелчка нажатая кнопка меняется на оранжевый, а кнопки справа отпосле оранжевого цвета он изменяется на следующий цвет в массиве, если нажатая кнопка находится в конце массива, начните снова с начала.Делайте все это в одном классе
Каждый последующий щелчок должен перемещать цвета на одну позицию вправо, циклически проходя по массиву.
Что я думаю, что мне нужно сделать (после того, как я поставил waaayчтобы много думать об этом!): есть отдельный метод для первого щелчка, где указатель указывает, какая кнопка [] была нажата (т.е. источник).Обновите все кнопки отсюда, используя цикл, находя модуль количества кнопок и циклически изменяя, пока все кнопки не будут обновлены.
После запуска этого метода, никогда не запускайте его снова и циклически просматривайте массив цветов послекаждый щелчок.
Проблема в том, что я понятия не имею, как бы это реализовать, несмотря на буквальные дни попыток.Может ли кто-нибудь помочь мне с этим?Я приму любую обратную связь или помощь, которую смогу получить, независимо от того, насколько она мала, потому что это сводит меня с ума!:)
Большое спасибо всем, следующий код:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ButtonJava3 extends JButton
implements ActionListener{
public static int noOfButtons=3;
private static final Color[] COLORS = { Color.ORANGE,
Color.WHITE,
Color.GREEN};
private int clicks;
private static ButtonJava3[] buttons;
public static void main ( String[] args ) {
JFrame frame = new JFrame ( "ButtonJava (the Hutt)" );
JPanel panel = new JPanel( );
buttons = new ButtonJava3[3];
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
for(int i = 0;i<buttons.length ; i++){
buttons[i] = new ButtonJava3();
panel.add(buttons[i]);
}
frame.getContentPane( ).add( panel );
frame.setSize( 300, 300 );
frame.setVisible( true );
}
private ButtonJava3(){
setBackground( Color.YELLOW );
setText( "Pick Me" );
this.addActionListener( this );
}
private void updateButtons( ) {
clicks++;
int i = 0;
do {
buttons[i].setBackground( COLORS[i] );
i++;
} while(i<noOfButtons);
setText( Integer.toString(clicks) );
}
@Override
public void actionPerformed( ActionEvent event ){
updateButtons( );
}
}
Еще раз спасибо, и приношу извинения за столько вопросов!