packageguj;importjava.awt.Dimension;importjavax.swing.BoxLayout;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JTextField;importjavax.swing.SwingUtilities;publicclassExemploOverrideGetTextextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;privateJTextFieldtxtExemplo=null;privateJLabellblResultado=null;privateJButtonbtnTestar=null;privateJTextFieldgetTxtExemplo(){if(txtExemplo==null){txtExemplo=newMeuJTextField();txtExemplo.setColumns(20);txtExemplo.setPreferredSize(newDimension(100,20));}returntxtExemplo;}privateJButtongetBtnTestar(){if(btnTestar==null){btnTestar=newJButton();btnTestar.setText("Checar o estado do JTextField");btnTestar.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){lblResultado.setText("O JTextField = "+txtExemplo.getText());}});}returnbtnTestar;}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){ExemploOverrideGetTextthisClass=newExemploOverrideGetText();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(true);}});}publicExemploOverrideGetText(){super();initialize();}privatevoidinitialize(){this.setSize(300,100);this.setContentPane(getJContentPane());this.setTitle("Teste JTextField");}privateJPanelgetJContentPane(){if(jContentPane==null){lblResultado=newJLabel();lblResultado.setText("");jContentPane=newJPanel();jContentPane.setLayout(newBoxLayout(getJContentPane(),BoxLayout.Y_AXIS));jContentPane.add(getTxtExemplo(),null);jContentPane.add(lblResultado,null);jContentPane.add(getBtnTestar(),null);}returnjContentPane;}}
gregorioarthur
Agora compreendi!
então! so que assim eu teria que “criar” o meu JtextField e a minha JtextArea certo?
nao haveria um forma de eu fazer isso meio genérico, como demonstrei acima?
na verdade, não há uma forma de fazer com o código que eu postei acima funcione?
valew!
E
entanglement
Você quer fazer uma coisa que no Ruby se chama “monkey patching” ou “duck punching”, ou seja, mudar o comportamento de classes que já existem sem criar classes derivadas a partir delas.
Isso não existe em Java, pronto. Quer coisa parecida com isso? Mude de linguagem.
De qualquer maneira, monkey patching é uma prática não muito recomendável se você não souber o que está fazendo:
(OK, talvez exista uma forma de fazer algo parecido com isso com AOP, mas deixo a explicação completa sobre se isso é ou não possível aos especialistas em AOP. Acredito que isso seja difícil ou impossível, já que as classes JTextField, JTextArea etc. são carregadas pelo classloader default, e AOP usualmente requer um classloader especializado ou então a modificação dos bytecodes das suas classes. Mas eu não sou especialista em AOP.)
gregorioarthur
Perfeito cara!
na verdade, já até fiz oq queria… mas sua explicação foi mto boa.
Agradeço pela atenção e auxilio!
A propósito, resolvi implementando os meus proprios TF e TA (como no código postado por vc)… Tronou-se mais fácil e viável nas condições atuais!