Código Text Area

7 respostas
P

como eu formato o texto de um text area em formato de cóidigo(Ex.:Quando postamos um tópico e inserimos nele código - clicamos na opção de Code para o texto se transformar em formato código) como faço isso ?

7 Respostas

A
não entendi exatamente sua pergunta. Qual formato de código seria? Você pode usar por exemplo o NumberFormat (java.text.NumberFormat). Exemplo:
import java.text.NumberFormat;
    import java.util.Locale;

    public class DecimalFormat1 {
        public static void main(String args[]) {

            // get format for default locale

            NumberFormat nf1 = NumberFormat.getInstance();
            System.out.println(nf1.format(1234.56));

            // get format for German locale

            NumberFormat nf2 =
                NumberFormat.getInstance(Locale.GERMAN);
            System.out.println(nf2.format(1234.56));
        }
    }
att.
P

Estou inserindo em um text Area comando java gostaria que esse texto tivesse o formato de código java
Ex de um texto em formato de código.:

public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Testes().setVisible(true); } }); }

A
Entendi. Não conheço nada que pode fazer automaticamente isto. Mas não é difícil fazer, só vai dar um pouco de trabalho. Os componentes Swing aceitam HTML. Então você terá que varrer o texto a ser formatado como código, produzir um HTML a partir do texto varrido e jogar este HTML como conteúdo do componente Swing. Exemplo de um código com uso de HTML em Swing:
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class HTMLButton extends JApplet {
  private JButton b = new JButton("<html><b><font size=+2>"
      + "<center>Hello!<br><i>Press me now!");

  public void init() {
    b.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        getContentPane().add(
            new JLabel("<html>" + "<i><font size=+4>Kapow!"));
        // Force a re-layout to include the new label:
        validate();
      }
    });
    Container cp = getContentPane();
    cp.setLayout(new FlowLayout());
    cp.add(b);
  }

  public static void main(String[] args) {
    run(new HTMLButton(), 200, 500);
  }

  public static void run(JApplet applet, int width, int height) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(applet);
    frame.setSize(width, height);
    applet.init();
    applet.start();
    frame.setVisible(true);
  }
}
boa sorte.
P

estou fazendo aplicação desktop ,como faria?

A

olá,
não importa se é desktop. Você vai ter que pegar token por token (a menor parte comprensível de uma linguagem), definir como este deve ser apresentador e gerar o HTML correspondente. Um exemplo em pseudocódigo:

String tudo=new String("");
tudo+="<html>"
enquando existem tokens
    token=pega token atual()
    tipo=verifica qual o tipo de token(token)
    String html_token=gera formatação html para o token(token,tipo)    -- segundo o formato aceito pelos componentes Swing
    tudo+=html_token
fim
campoSwing.setText(tudo)       -- seta tudo no campo

uma página de referência pode ser: http://java.sun.com/docs/books/tutorial/uiswing/components/html.html
para obter os tokens você deverá reconhecê-los em nível de linguagem (análise léxica mesmo).
certamente existem formas melhores e mais rápidas (em tempo de execução) para fazer isto.
conseguiu pegar a idéia básica?

até+

V

Num TextArea você não faz mesmo.

Agora, num JTextPane, você faz. Aliás, você pode baixar esse editor aqui:
http://www.guj.com.br/posts/list/48736.java

Que já tem a formatação para java pronta. Ele pode ser facilmente embarcado em outras aplicações.

A

Valeu pela dica ViniGodoy :slight_smile:
eu não conhecia esse ANTLR… parece muito bom! :smiley:

Criado 5 de dezembro de 2009
Ultima resposta 5 de dez. de 2009
Respostas 7
Participantes 3