Duvidas no jframe

Galera bom dia.

Estou com alguns problemas no meu codigo. consegui concluir basicamente tudo e so queria fazer duas coisas.

1- desabilitar 1 botão e fazer com que o mesmo ative somente apos a jTextField seja preenchida.
Estou usando isso e não to conseguindo sucesso.

if (jTextField1.getText().length() > 0) {
Jbregponto.setEnabled(false);
} else {
Jbregponto.setEnabled(true);
}

2- meu programa gera um arquivo que vai salvar o nome que foi digitado na caixa de texto e junto com o nome ele pega a hora e a data e salva junto e gostaria que tivesse um texto pre definido ao salvar no arquivo.
Por exemplo. no codigo abaixo ele vai gravar no arquivo “Texto digitado(Nome) Data Hora” e eu gostaria que foi
"texto digitado(Nome) seu ponto foi registrado em Data ás Hora.“
Gostaria de adicionar a parte em negrito de forma pre definida, tentei alterando (” dd/MM/yyyy hh:mm:ss") e colocando diretamente ai dentro mas não obtive exito, tentei colocar ai dentro mas entre outras " " também não obtive exito
Estou utilizando o código assim

Arquivo arquivo1 = new Arquivo();
String texto;
texto = this.jTextField1.getText()+ new SimpleDateFormat(" dd/MM/yyyy hh:mm:ss").format(new Date());
arquivo1.escreve(texto);

Alguma dica sobre como pesquisar, o que procurar para conseguir fazer essas duas coisas ?

Agradeço desde já.

pode utilizar dois eventos do proprio JTextField, KeyPressed ou KeyTyped , qual e a diferença,

O keyPressed é quando alguma tecla é pressionada:
http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/KeyEvent.html#KEY_PRESSED

O keyTyped ocorre quando algum caracter é adicionado:
http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/KeyEvent.html#KEY_TYPED

KeyPressed, cria ai uma variavel int e vai incrementando a cada tecla pressionada , apos chegar em um determinado numero ativa lá o seu botão, por exemplo…

Crie um método atualizaEstadoBotao() para atualizar o estado do seu botão:

private void atualizaEstadoBotao() {
    meuBotao.setEnabled(meuTextField.getText().length() > 0);
}

Registre um DocumentListener no seu JTextField para monitorar as alterações em seu conteúdo e invocar o método atualizaEstadoBotao().

meuTextField.getDocument().addDocumentListener(new DocumentListener() {

    @Override
    public void removeUpdate(DocumentEvent e) {
        atualizaEstadoBotao();
    }

    @Override
    public void insertUpdate(DocumentEvent e) {
        atualizaEstadoBotao();
    }

    @Override
    public void changedUpdate(DocumentEvent e) {
        atualizaEstadoBotao();
    }
});

@staroski tentei aqui e acho que não soube implementar isso, coloquei o private void atualizaestadobotão na classe principal e coloquei os remove insert e changed no jtextfield actionperformed e chamei o metodo, nada aconteceu… o botão continuou ativo mesmo com o jtextfield em branco

@marcelo-rebello tentei utilizar o keypressed mas acho que fiz algo errado fui ate o botão e acrescentei o evento keypressed, no codigo eu deixei assim:

private void JbregpontoKeyPressed(java.awt.event.KeyEvent evt) {

     if(evt.getKeyCode() == KeyEvent.VK_ENTER){    
    
}                      

não era o que eu queria mas daria pra adaptar pra que assim que a pessoa terminasse de digitar ela apertasse o Enter e ativasse o botão. porão nada aconteceu logo pensei que talvez tivesse faltando algo pq não tem dizendo nada ali que é pra bloquear ou liberar o botão então adicionei ao if um setenabled false e um else com setenabled true mas mesmo assim não funcionou.

removeUpdate, insertUpdate e changedUpdate são métodos da interface DocumentListener e não da ActionListener.
Você não vai adicionar nenhum ActionListener ao JTextField, só vai adicionar aquele DocumentListener ao Document do JTextField.

não consegui usar, não entendo muito bem do conceito disso. mas consegui de outra forma.

na action performed do meu botão que ao clicar pega o que foi digitado e salva no arquivo eu usei um if/else que eu vi sendo usado em um video so que pra uma combobox

if (jTextField1.getText().length() == 0) {
JOptionPane.showMessageDialog(null, “Digite seu nome na caixa de texto!”, null, WIDTH);
} else {
new Popup().setVisible(true);
dispose();
Arquivo arquivo1 = new Arquivo();
String texto;
texto = this.jTextField1.getText()+ new SimpleDateFormat(" dd/MM/yyyy hh:mm:ss").format(new Date());
arquivo1.escreve(texto);

   }

ai desse jeito ficou exatamente como eu queria, se a pessoa não digita nada no texto o botão abre uma msg de erro e não executa nada, caso seja digitado algo, ele salva o nome no arquivo com a hora e a data
Agora so me falta a questão de colocar um texto predefinido entre os dados que são guardados no arquivo, alguma ideia de como fazer isso ?

Esse conceito é um padrão de projeto chamado Observer ou Listener, os componentes do Swing e AWT implementam muito isso.
Se algum componente dispara algum tipo de evento, então você pode adicionar Listeners para tratar aquele evento.

Você disse que adicionou um ActionListener ao seu jTextField1, então, você fez isso:

jTextField1.addActionListener(new ActionListener() {
	
	public void actionPerformed(ActionEvent ae) {
		// aqui implementou o que queria
	}
});

Pois bem, eu sugeri que ao invés de ActionListener, você utilizasse o DocumentListener, assim:

jTextField1.getDocument().addDocumentListener(new DocumentListener() {

    @Override
    public void removeUpdate(DocumentEvent e) {
        atualizaEstadoBotao();
    }

    @Override
    public void insertUpdate(DocumentEvent e) {
        atualizaEstadoBotao();
    }

    @Override
    public void changedUpdate(DocumentEvent e) {
        atualizaEstadoBotao();
    }
});

Não há mistério.