Estou começando a estudar java nessas férias do meio do ano quando vejo isso:
package ExemploColor;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JColorChooser;
import javax.swing.JPanel;
public class ShowColors extends JFrame{
//ISSO É UMA CLASE
private JButton changeColorJButton;//BOTÃO
private Color color = Color.LIGHT_GRAY;
private JPanel colorJPanel;//PAINEL
public ShowColors()
{
super( "Usando o JColorChooser" );
colorJPanel = new JPanel();
colorJPanel.setBackground( color );
changeColorJButton = new JButton( "Escolher a cor" );
changeColorJButton.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
color = JColorChooser.showDialog(
ShowColors.this, "Escolher a color", color );
if( color == null )
color = Color.LIGHT_GRAY;
colorJPanel.setBackground( color );
}
}
);
add( colorJPanel, BorderLayout.CENTER );
add( changeColorJButton, BorderLayout.SOUTH );
setSize( 400, 130 );
setVisible( true );
}
}
OBS.:Esse código não é meu, é do site java progressivo e se encontra nesse endereço: http://www.javaprogressivo.net/2012/08/java-graficos-e-2d-parte-1-usando-o.html.
minha dúvida está exatamente em :
changeColorJButton = new JButton( "Escolher a cor" );
changeColorJButton.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
color = JColorChooser.showDialog(
ShowColors.this, "Escolher a color", color );
if( color == null )
color = Color.LIGHT_GRAY;
colorJPanel.setBackground( color );
}
}
);
Por que o programador em questão colocou “new ActionListener()” ao invés de colocar uma instância de uma classe feita por ele e colocada como ouvinte. E outra, por que ele dá um “override” no action performed aí no meio desses parênteses. Desculpem-me pela leiguice em java, mas não sou muito familiarizado com sendo definidos ou redefinidos dentro de parênteses, eu vim do C. E java é a primeira linguagem O.O. que estudo.
Por favor, mentes ávidas do amanhã, me ajudem.