Confusão com a hierarquia do import

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?

A hierarquia está correta, significa que JOptionPane extend JComponent que por sua vez extend Container e porae vai, ou seja da classe JOptionPane vc consegue utilizar métodos e atributos da classe Object ou qualquer uma dessas outras ae, desde que não sejam privados.

vlw.
E quanto a isto:
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?

Alguém pode me ajudar?
Quando eu posso usar a classe diretamente e quando eu não posso, ou seja, devo utilizar new .create etc.

Se a classe possui algum método static você pode utilizar esses métodos diretamente sem precisar instanciar (sem utilizar new), caso contrário vc deve criar uma instancia dessa classe para utiliza-la

Obrigado mais uma vez. :wink: