t_java 19 de jan. de 2008
Utilize o botão direito do mouse na janela Listagem e poderá habilitar e desabilitar os componentes do formulário.
import javax.swing.* ;
import javax.swing.tree.* ;
import java.awt.* ;
import java.awt.event.* ;
public class Formulario extends JFrame {
JMenuBar barra ;
JMenu mnuarquivo ;
JMenu mnuopcoes ;
JMenuItem mnusair ;
JMenuItem mnucliente ;
JMenuItem mnupagar ;
JMenuItem mnureceber ;
JButton cmdsair ;
JButton cmdcliente ;
JButton cmdpagar ;
JButton cmdreceber ;
JButton cmdnovo ;
JButton cmdgravar ;
JTextField txtcodigo ;
JTextField txtnome ;
JToolBar tool ;
JPanel centro ;
JMenu mnuconfiguracoes ;
JCheckBoxMenuItem mnuseguranca ;
public Formulario () {
super ();
barra = new JMenuBar ();
mnuarquivo = new JMenu ( "Arquivo" );
mnuopcoes = new JMenu ( "Opcoes" );
mnusair = new JMenuItem ( "Sair" );
mnucliente = new JMenuItem ( "Cliente" );
mnupagar = new JMenuItem ( "Pagar" );
mnureceber = new JMenuItem ( "Receber" );
mnuconfiguracoes = new JMenu ( "Configurações" );
mnuseguranca = new JCheckBoxMenuItem ( "Segurança" );
barra . add ( mnuarquivo );
barra . add ( mnuopcoes );
mnuarquivo . add ( mnusair );
mnuopcoes . add ( mnucliente );
mnuopcoes . add ( mnupagar );
mnuopcoes . add ( mnureceber );
mnuconfiguracoes . add ( mnuseguranca );
mnuopcoes . add ( mnuconfiguracoes );
tool = new JToolBar ();
cmdsair = new JButton ( "Sair" );
cmdcliente = new JButton ( "Cliente" );
cmdpagar = new JButton ( "Pagar" );
cmdreceber = new JButton ( "Receber" );
tool . add ( cmdsair );
tool . add ( cmdcliente );
tool . add ( cmdpagar );
tool . add ( cmdreceber );
centro = new JPanel ( new GridLayout ( 0 , 2 ));
txtcodigo = new JTextField ();
txtnome = new JTextField ();
txtcodigo . setName ( "txtcodigo" );
txtnome . setName ( "txtnome" );
cmdnovo = new JButton ( "Novo" );
cmdgravar = new JButton ( "Gravar" );
centro . add ( new JLabel ( "Codigo" ));
centro . add ( txtcodigo );
centro . add ( new JLabel ( "Nome" ));
centro . add ( txtnome );
centro . add ( cmdnovo );
centro . add ( cmdgravar );
setSize ( 500 , 500 );
setJMenuBar ( barra );
getContentPane (). add ( tool , BorderLayout . NORTH );
getContentPane (). add ( centro , BorderLayout . CENTER );
setDefaultCloseOperation ( EXIT_ON_CLOSE );
setVisible ( true );
setTitle ( "Formulario 1" );
new Listagem ( this );
}
public static void main ( String [] args ) {
new Formulario ();
}
}
class Listagem extends JFrame {
private JFrame objeto ;
private JTree arvore ;
private DefaultTreeModel modelo ;
private ItemArvore node ;
private JScrollPane scroll ;
private ItemArvore menus ;
private ItemArvore botoes ;
private ItemArvore textos ;
private JPopupMenu menu ;
private JMenuItem opcao ;
public Listagem ( JFrame objeto ) {
super ();
this . objeto = objeto ;
node = new ItemArvore ( objeto . getTitle ());
menus = new ItemArvore ( "Menus" );
botoes = new ItemArvore ( "Botoes" );
textos = new ItemArvore ( "Textos" );
node . add ( menus );
node . add ( botoes );
node . add ( textos );
modelo = new DefaultTreeModel ( node );
arvore = new JTree ( modelo );
scroll = new JScrollPane ( arvore );
getContentPane (). add ( scroll , BorderLayout . CENTER );
preencher ( objeto . getContentPane ());
preencherMenu ( objeto . getJMenuBar (). getSubElements () , menus );
menu = new JPopupMenu ();
opcao = new JMenuItem ( "Desabilitar" );
menu . add ( opcao );
arvore . addMouseListener ( new MouseAdapter () {
public void mouseClicked ( MouseEvent e ) {
ItemArvore n = ( ItemArvore ) arvore . getLastSelectedPathComponent ();
if ( e . getButton () > 1 ) {
if ( n != null ) {
if ( n . getComponente () != null ) {
if ( n . getComponente (). isEnabled ()) {
opcao . setText ( "Desabilitar" );
} else {
opcao . setText ( "Habilitar" );
}
menu . show ( arvore , e . getX (), e . getY ());
}
}
}
}
});
opcao . addActionListener ( new ActionListener () {
public void actionPerformed ( ActionEvent e ) {
ItemArvore n = ( ItemArvore ) arvore . getLastSelectedPathComponent ();
if ( n == null ) {
return ;
}
if ( n . getComponente () != null ) {
if ( n . getComponente (). isEnabled ()) {
n . getComponente (). setEnabled ( false );
} else {
n . getComponente (). setEnabled ( true );
}
}
}
});
setSize ( 300 , 500 );
setLocation ( 500 , 0 );
setVisible ( true );
setTitle ( "Listagem" );
}
private void preencher ( Container container ) {
Component [] componentes ;
ItemArvore n = null ;
componentes = container . getComponents ();
for ( int i = 0 ; i < componentes . length ; i ++ ) {
if ( componentes [ i ] instanceof Container ) {
preencher (( Container ) componentes [ i ] );
}
if ( componentes [ i ] instanceof JButton ) {
n = new ItemArvore ((( JButton ) componentes [ i ] ). getText ());
n . setComponente ( componentes [ i ] );
botoes . add ( n );
}
if ( componentes [ i ] instanceof JTextField ) {
n = new ItemArvore ((( JTextField ) componentes [ i ] ). getName ());
n . setComponente ( componentes [ i ] );
textos . add ( n );
}
}
}
private void preencherMenu ( MenuElement [] elementos , ItemArvore item ) {
ItemArvore n = null ;
for ( int i = 0 ; i < elementos . length ; i ++ ) {
if ( elementos [ i ] . getSubElements (). length > 0 ) {
if ( elementos [ i ] instanceof JPopupMenu ) {
n = item ;
} else {
n = new ItemArvore ((( JMenuItem ) elementos [ i ] ). getText ());
n . setComponente ( elementos [ i ] . getComponent ());
item . add ( n );
}
preencherMenu ( elementos [ i ] . getSubElements (), n );
} else {
n = new ItemArvore ((( JMenuItem ) elementos [ i ] ). getText ());
n . setComponente ( elementos [ i ] . getComponent ());
item . add ( n );
}
}
}
}
class ItemArvore extends DefaultMutableTreeNode {
Component componente ;
public ItemArvore ( Object userObject ) {
super ( userObject );
}
public void setComponente ( Component componente ){
this . componente = componente ;
}
public Component getComponente (){
return componente ;
}
}
Inacio_Alves 7 de fev. de 2008
Valeu mesmo cara, a funcionalidade é 100%, infelizmente só tive tempo de testar neste feriado.
Vou tentar implementá o código botando as informações em uma tabela para serem usadas na hora de abrir formulários, verificando as permissões do usuário e configurando o form de acordo com elas.