Tenho o seguinte exemplo:
import javax.swing.JOptionPane;
public class BemVindoCxDialogo
{
public static void main(String args[])
{
JOptionPane.showMessageDialog(null, "Bem-Vindo\nVamos programar!");
}
}
Como vemos no exemplo acima eu importo a classe JOptionPane.
Quando fui verificar a documentação no site: http://java.sun.com/javase/6/docs/api/
Apareceu a seguinte hierarquia:
(Eu achava que deveria aparecer javax.swing.JOptionPane, assim como está no import)
Class JOptionPane
-java.lang.Object
–extended by java.awt.Component
—extended by java.awt.Container
----extended by javax.swing.JComponent
-----extended by javax.swing.JOptionPan
Agora estou confuso. O que é este monte de Classes? Essa hierarquia está correta? Existe uma hierarquia de construção, ou seja, informando quais classes o componente se originou?
Outra coisa que me deixou confuso, foi esse exemplo:
JOptionPane pane = new JOptionPane(arguments);
pane.set.Xxxx(...); // Configure
JDialog dialog = pane.createDialog(parentComponent, title);
dialog.show();
Object selectedValue = pane.getValue();
if(selectedValue == null)
return CLOSED_OPTION;
//If there is not an array of option buttons:
if(options == null) {
if(selectedValue instanceof Integer)
return ((Integer)selectedValue).intValue();
return CLOSED_OPTION;
}
//If there is an array of option buttons:
for(int counter = 0, maxCounter = options.length;
counter < maxCounter; counter++) {
if(options[counter].equals(selectedValue))
return counter;
}
return CLOSED_OPTION;
Diferente do anterior ele criou o objeto e tudo.
Vi que é possível (no primeiro exemplo) usar a classe diretamente, porém no exemplo do site ele usa new .create etc.
Estou confuso. Quando eu posso usar uma classe diretamente e quando eu devo criar um objeto desta classe?