ola pessoal
estou usando o netbeans para “desenhar” minhas telas
mas quando o netbeans cria o metodo "private void initComponents() {"
dae ele não deixa editar o codigo fonte
no eclipse eu consegui mudar
parece uma trava do netbeans em relacao ha alguns codigos para que o programa funcione sem problemas, para que rode perfeitamente
tem como mudar isso ? tirar essa 'trava’
obrigado
abra a classe pelo notepad e altere
eu fazia isso quando o netbeans bugava e colocava codigo no lugar errado, e depois nao dava pra alterar
nao consigo desabilitar essa trava do netbeans
Eu acho que não tem como desabilitar
<strike>Este é um dos motivos porque eu prefiro criar minhas GUI “na unha”</strike>
Você pode clicar com o botão direito do mouse no componente desejado e escolher Personalizar código…
…não dá para alterar tudo, mas uma boa parte
flw :thumbup:
[quote=marcoscorso]nao consigo desabilitar essa trava do netbeans
[/quote]
NetBeans e uma otima ferramenta tenho experiencia com Eclipse e na minha humilde opiniao o NetBeans+Matisse e bem melhor que o Eclipse+WindowBuilder. O NetBeans faz esse bloqueio para evitar erros do usuario(desenvolvedor) em tempo de desenvolvimento. Ferramentas RAD(Rapid Application Development) como o NetBeans tendem a ter esse tipo de comportamento evitando ao maximo erros. Nao sei se vc conhece, mas veja o caso dos antigos Delphi e VB, sao a msma coisa.
Nao vejo o pq de desbloquear pois tudo funciona perfeitamente dessa maneira.
Enfim, não é possível editar o trecho “Generated Code” que o NetBeans gera diretamente no editor…O NetBeans nao permite, pelos motivos que ja relatei. Isso acontece porque o NetBeans cria um arquivo XML para gerar o formulário quando a IDE é inicializada, sendo assim se vc olhar na sua pasta de projetos vc tera 2 arquivos…Um Arquivo.form e um Arquivo.java com os mesmos nomes. Basicamente o .form e a tela e o .java sua classe de negocios.
Eu quando comecei a trabalhar com NetBeans e abandonei o Eclipse, fiz o seguinte teste…Apaguei o .form deixando so o .java …Tudo continuou funcionando perfeitamente, sem a tela de desenhos obviamente…Mas qdo apaguei o .java tudo parou o que esta correto. Sendo assim um precisa do outro para manter-se tudo funcional e nunca se deve apagar nem um nem outro, #FicaDica.
t+ e boa sorte.
e como eu faço para desenhar um jtextfield que eu criei dentro do netbeans … nao queria criar na unha …
todos os componentes awt+swing estaum na paleta do NetBeans, basta vc escolher o componente que quer e arrasta-lo para o seu container de tela.
t+
mas eu criei um componente …
Como assim criei um componente ??
Se vc estiver se referindo a " new JTextField(); "…Basta vc adiciona-lo por codigo ao seu JFrame/JDialog seja la o que criou. Agora se estiver falando sobre ter criado um novo componente para o NetBeans basta vc adiciona-lo a paleta do NetBeans.
Estude componentes Swing para entender como funciona.
t+ e boa sorte.
o componente que eu criei foi uma classe chamada jtextfieldmoedareal onde o usuario informar apenas valores monetarios num jtextfield e minhas validacoes …
Tudo bem o pessoal que usa Matisse, WindowsBuilder, JFrameBuilder, etc.
Mas eu não suporto usar esse tipo de coisa. Fiz meu primeiro projeto GUI com Matisse e depois disso SEMPRE fiz na unha. Aprendi a usar LayoutManager (Border pras frames mais simples e Mig pras mais detalhadas) e nunca mais usei os “drag & drop”. É muito melhor, deixa o código super limo, com nomes intuitivos, vc deixa o código do jeito que quiser.
Aprenda a fazer GUI no código e seja feliz!
Já utilizei Eclipse desenvolvendo telas na unha. Prefiro sem dúvidas, o NetBeans!
eu consigo montar na unha uma tela swing
mas tenho pressa em montar o projeto atual
so nao estou conseguindo jogar meu jtextfieldmoeda no panel_sul do meu frame ( BorderLayout )
private JTextFieldMoedaReal jtxfMoeda;
private void AdicionaCampoMoeda() {
jtxfMoeda = new JTextFieldMoedaReal(2);
jtxfMoeda.setVisible(true);
add(jtxfMoeda);
}
dessa maneira ele adiciona o componente no panel_center
[quote=fuadksd]…SEMPRE fiz na unha. Aprendi a usar LayoutManager (Border pras frames mais simples e Mig pras mais detalhadas) e nunca mais usei os “drag & drop”. É muito melhor, deixa o código super limo, com nomes intuitivos, vc deixa o código do jeito que quiser.
Aprenda a fazer GUI no código e seja feliz![/quote]
Tbm acho isto uma “prática feliz”.
O princípio é entender como usar todos os LayoutManager.
Assim você pode criar seus próprios componentes personalizados, joguinhos e mto + (só depende de sua imaginação e do Java 2D )
flw :thumbup:
Entendi o que vc quer.
Bem, eu tenho uma classe de valores monetarios onde digito da direita pra esquerda conforme caixas de banco. A maneira como uso, faco da seguinte forma.
1 - Adiciono um JTextField simples ao um Container.
2 - Depois de adicionar, vou ate a opcao “Code” nas propriedades do componente
3 - Entaum eu coloco no “Custom Creation Code” o nome da minha classe no caso: new JMoneyField(int length);
4 - 100% funcional
///aqui a classe a q me referi
public class JMoneyField extends JFormattedTextField {
// modificado por Dario Basso Cardoso
private int iMaxLength;
private static final long serialVersionUID = -5712106034509737967L;
private static final SimpleAttributeSet nullAttribute = new SimpleAttributeSet();
/**
* Creates a new instance of JMoneyField
*/
// modificado por Dario Basso Cardoso
public JMoneyField(int maxlen) {
iMaxLength = maxlen;
this.setHorizontalAlignment( JTextField.CENTER );
this.setDocument(new MoneyFieldDocument());
this.addFocusListener(new MoneyFieldFocusListener());
this.setText("0,00");
this.addCaretListener(new CaretListener(){
public void caretUpdate(CaretEvent e) {
if (e.getDot() != getText().length() ) {
getCaret().setDot(getText().length());
}
}
});
}
private final class MoneyFieldFocusListener extends FocusAdapter{
public void focusGained(FocusEvent e) {
selectAll();
}
}
private final class MoneyFieldDocument extends PlainDocument {
private static final long serialVersionUID = -3802846632709128803L;
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
String original = getText(0,getLength());
// modificado por Dario Basso Cardoso
if (original.length()>=iMaxLength)
java.awt.Toolkit.getDefaultToolkit().beep();
// modificado por Dario Basso Cardoso
if (original.length()<iMaxLength) {
StringBuffer mascarado = new StringBuffer();
if (a != nullAttribute) {
//limpa o campo
remove(-1,getLength());
mascarado.append((original+str).replaceAll("[^0-9]",""));
for (int i = 0; i < mascarado.length(); i++){
if (!Character.isDigit(mascarado.charAt(i))){
mascarado.deleteCharAt(i);
}
}
Long number = new Long(mascarado.toString());
mascarado.replace(0, mascarado.length(), number.toString());
if ( mascarado.length() < 3 )
{
if ( mascarado.length() == 1 ) {
mascarado.insert(0,"0");
mascarado.insert(0,",");
mascarado.insert(0,"0");
}else if ( mascarado.length() == 2 ) {
mascarado.insert(0,",");
mascarado.insert(0,"0");
}
}else{
mascarado.insert(mascarado.length()-2,",");
}
if ( mascarado.length() > 6 ) {
mascarado.insert(mascarado.length()-6, '.');
if (mascarado.length() > 10 ) {
mascarado.insert(mascarado.length()-10, '.');
if (mascarado.length() > 14 ) {
mascarado.insert(mascarado.length()-14, '.');
}
}
}
super.insertString(0, mascarado.toString(), a);
}else{
if (original.length() == 0){
super.insertString(0, "0,00", a);
}
}
}
}
@Override
public void remove(int offs, int len) throws BadLocationException {
if ( len == getLength() ) {
super.remove(0, len);
if (offs != -1){
insertString(0, "",nullAttribute);
}
}else{
String original = getText(0, getLength()).substring(0, offs) + getText(0, getLength()).substring(offs+len);
super.remove(0, getLength());
insertString(0,original,null);
}
}
}
}
Eu so trabalho com NetBeans faz 3 anos, antes era so Eclipse. Mas ao meu ponto de vista, e pela minha humilde experiencia o NetBeans tem um poder de criacao muito maior q o Eclipse.
Quanto a criar tudo na mão, eu prefiro produtividade e se tem uma ferramenta RAD q me ajuda nisso, pq nao usa-la ? Apenas pra dizer “Ah, eu crio tudo na mao”. Ja pensei assim qdo estava comecando com Python e gostava de criar tudo na mao, mas depois de um tempo percebi q tempo é dinheiro e aderi as ferramentas RAD do Python como o BOA Constructor sem contar q ja tinha trabalhado com Delphi/VB. E quando sai do Python e vim para o Java conheci o Eclipse+VisualEditor que usei por 2 anos e logo depois conheci o NetBeans q hoje é minha ferramenta padrao de criacao.
Entaum acho q usar uma ferramentas RAD acelera muito a criacao e vc fica focado nas suas regras de negocio pois as telas o RAD se encarrega, basta clicar e arrastar ;-)…E com NetBeans nada impede de criar tudo na mao como no Eclipse, vai de gosto.
t+ e boa sorte.
olá fernandopaiva
agradeço sua resposta
ajudou bastante
baseando nisso montei aqui e funcionou
ficou show de bola
o problema é que os metodos da minha classe eu não consigo chamar
segue codigo
static javax.swing.JTextField jtxfSaldo;
..........
jtxfSaldo = new JTextFieldMoedaReal(2);
..........
jtxfValor.formatarValor();
..........
dae aparece a mesangem de erro que o metodo formatarValor(); não existe para JTextField
como resolver
obrigado
Segue minha classe JTextFieldMoedaReal
public class JTextFieldMoedaReal extends JTextField {
...........
public void formatarValor() {
..........
}
}