Java GUI создается, но событие ничего не вызывает - PullRequest
0 голосов
/ 08 февраля 2011

Я пытаюсь создать этот простой графический интерфейс, в котором количество кликов отображается на кнопке и увеличивается после каждого клика, и чтобы после каждого клика цвета каждой кнопки поворачивались на одно значение вправо.На данный момент графический интерфейс создан, но фон не установлен, и ничего не происходит, когда вы нажимаете на что-либо.Я не могу найти проблему здесь.Кто-нибудь может их увидеть?

Большое спасибо за помощь с этим :)

 import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;


public class ButtonJava extends JButton implements ActionListener  {
  private static int currentColor=0;
  private int clicks;
  private static final Color[] COLORS = {
    Color.ORANGE,
    Color.WHITE,
    Color.GREEN };

  public ButtonJava( ){
    setBackground( Color.YELLOW );
    setText( "Pick ME" );
    this.addActionListener( this );
  }

  public static void main(String[] args) {
    JFrame frame = new JFrame ("JFrame");
    JPanel panel = new JPanel( );
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
    JButton buttons[] = new JButton[3];
    for(int i = 0;i<buttons.length ; i++){
      buttons[i] = new ButtonJava(); 
      panel.add(buttons[i]);
    }
    frame.getContentPane( ).add( panel );
    frame.setSize( 500, 500);
    frame.setVisible( true );
  }

  private void updateButton() {
    changeColors();
    clicks++;
    setText( "# of clicks = " + Integer.toString(clicks) );
  }

  private void changeColors( ) {
    for (int i=0;i<COLORS.length;i++){
      setBackground(COLORS[currentColor]);
      currentColor %=2;
    }
  }

  @Override
  public void actionPerformed( ActionEvent event ) {
    updateButton( );   
  }


}

Ответы [ 3 ]

1 голос
/ 08 февраля 2011

Простая ошибка - вы не создаете свой собственный класс кнопок, вы используете JButton.
Измените следующую строку:
buttons[i] = new JButton("Pick Me");
To:
buttons[i] = new ButtonJava();

0 голосов
/ 09 февраля 2011

Разве это не должно быть:

ButtonJava buttons[] = new ButtonJava[3];
for(int i = 0;i<buttons.length ; i++){
    buttons[i] = new ButtonJava(); 
    panel.add(buttons[i]);
 }

?

0 голосов
/ 08 февраля 2011

В main вы делаете нормальные JButton с и добавляете их в свой пользовательский интерфейс, когда, я полагаю, вы хотите добавить ButtonJava вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...