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 ?
não entendi exatamente sua pergunta. Qual formato de código seria?
Você pode usar por exemplo o NumberFormat (java.text.NumberFormat). Exemplo:
[code] 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));
}
}
[/code]
att.
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);
}
});
}
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:
[code]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(""
+ “Hello!
Press me now!”);
public void init() {
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
getContentPane().add(
new JLabel("" + “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);
}
}[/code]
boa sorte.
estou fazendo aplicação desktop ,como faria?
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é+
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.
Valeu pela dica ViniGodoy
eu não conhecia esse ANTLR… parece muito bom!