Duvida com netbeans

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 :smiley:

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 :expressionless:

<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 :smiley:

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”. :smiley:

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 :smiley: )

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() {
..........
}
}