Tem q ser em puro java???usa html... exemplo:
<HTML>
<HEAD>
<TITLE>Editor</TITLE>
<STYLE TYPE="text/css">
BODY {margin: 0pt; padding: 0pt; border: none}
IFRAME {
width: 100%;
border: none;
}
SELECT {
background-color: #D8D8D8;
font-family: "Verdana, Arial, Helvetica, sans-serif";
font-size: 8pt;
border: 1pt solid #666666;
}
TABLE {width:"100%"; background: #E4E4E4; text-align: center}
INPUT {width: 20px; font-family: "Verdana, Arial, Helvetica, sans-serif"; font-size: 8pt;}
LABEL {font-family: "Verdana, Arial, Helvetica, sans-serif"; font-size: 8pt;}
.heading {BACKGROUND: #CECECE}
.current {color: "red";}
.botao {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 8pt;
background-color: #EBEBEB;
border: 1pt solid #666666;
}
hr {
color: #666666;
background-color: #E4E4E4;
height: 1pt;
}
</STYLE>
<script LANGUAGE="JavaScript">
// O formato default é WYSIWYG HTML.
var format="HTML";
var bMode=true;
// Exportando funções.
var public_description = new public_description_nt;
function public_description_nt() {
this.put_html=put_html;
this.get_html=get_html;
this.bReady = false
}
// Função de limpeza do código fonte.
function cleanupHTML() {
bodyTags=textEdit.document.body.all
for (i=bodyTags.tags("FONT").length-1;i >= 0;i--)
if (bodyTags.tags("FONT")[i].style.backgroundColor="#ffffff") {
bodyTags.tags("FONT")[i].style.backgroundColor=""
if (bodyTags.tags("FONT")[i].outerHTML.substring(0,6)=="<FONT>")
bodyTags.tags("FONT")[i].outerHTML=bodyTags.tags("FONT")[i].innerHTML
}
}
// Função que retorna o texto digitado e formatado.
// Será chamada no evento OnSubmit do Form.
function get_html() {
if (format=="HTML") {
cleanupHTML()
return textEdit.document.body.innerHTML
}
else
return textEdit.document.body.innerText
}
// Função que coloca um texto no editor.
function put_html(v) {
if (format=="HTML")
textEdit.document.body.innerHTML=v
else
textEdit.document.body.innerText=v
}
// Inicializa o editor com um documento em branco.
function initEditor() {
textEdit.document.designMode="On"
textEdit.document.open()
textEdit.document.write("")
textEdit.document.close()
textEdit.focus()
MudarTamanho()
}
// Executa um comando no editor.
// Pelo menos um argumento é requerido. Alguns comandos
// requerem um segundo argumento opicional:
// ex., ("formatblock","<H1>") para colocar uma marca <H1>.
function doFormat(command) {
if (format!="HTML") {
displayError()
return
}
if (format=="HTML") {
if (arguments[1]=="CustomFont") {
arguments[1] = prompt("Com qual fonte você deseja formatar o texto?","Verdana, Arial, Helvetica, sans-serif")
}
if ((arguments[1]=="") && (arguments[0]=="forecolor")) {
arguments[1] = prompt("Qual a cor (ou código hexadecimal) que você deseja?
(Em Inglês)","Black")
}
var edit = textEdit.document.selection.createRange()
if (arguments[1]==null)
edit.execCommand(command)
else
edit.execCommand(command,false, arguments[1])
edit.select()
textEdit.focus()
}
}
// Função para criação de links.
function createLink() {
if (format!="HTML") {
displayError()
return
}
var isA = getEl("A",textEdit.document.selection.createRange().parentElement())
var str=prompt("Para qual URL você quer criar o link? (ex.: http://www.nome.com.br/)",isA ? isA.href : "http://")
if ((str!=null) && (str!="http://")) {
if ((textEdit.document.selection.type=="None") && (!isA)) {
var strNome=prompt("Que texto você quer que seja o link?",isA ? isA.href : "texto")
var sel=textEdit.document.selection.createRange()
sel.pasteHTML("<A HREF=""+str+"">"+strNome+"</A> ")
sel.select()
}
else
doFormat("CreateLink",str)
}
else
textEdit.focus()
}
function getEl(sTag,start) {
while ((start!=null) && (start.tagName!=sTag))
start = start.parentElement
return start
}
// Coloca o foco no editor.
function setFocus() {
textEdit.focus()
}
// Função que ajusta o editor na tela.
function MudarTamanho() {
document.all.textEdit.height = document.body.offsetHeight - (document.all.editbar.offsetHeight + document.all.editbar2.offsetHeight + document.all.editbar3.offsetHeight)
}
// Muda entre os modos WYSIWYG HTML e Texto (fonte do HTML).
function setMode(bNewMode) {
if (bNewMode!=bMode) {
if (bNewMode) {
textEdit.document.body.innerHTML = textEdit.document.body.innerText
textEdit.document.body.style.fontFamily = ""
textEdit.document.body.style.fontSize =""
format="HTML"
}
else {
cleanupHTML()
textEdit.document.body.innerText = textEdit.document.body.innerHTML
textEdit.document.body.style.fontFamily = "monospace"
textEdit.document.body.style.fontSize = "10pt"
format="Texto"
}
bMode=bNewMode
}
modeA.className=bMode?"current":"";
modeB.className=bMode?"":"current";
textEdit.focus()
var s = textEdit.document.body.createTextRange()
s.collapse(false)
s.select()
}
// Função que dispara um erro caso o editor esteja
// em modo Texto e o usuário tente inserir uma marca
// HTML.
function displayError() {
alert("A barra de formatação não pode ser utilizada no modo Editar");
textEdit.focus()
}
window.onload = initEditor
function envia(){
document.form2.texto.value = textEdit.document.body.innerHTML;
//alert(document.form2.texto.value);
}
</SCRIPT>
</HEAD>
<BODY SCROLL=No OnFocus="setFocus()" OnResize="MudarTamanho()">
<TABLE ID=editbar3 width="609">
<TR>
<TD noWrap width="151"> </TD>
<TD noWrap width="446"> <SELECT NAME="Paragrafo" onChange="doFormat('formatBlock',this[this.selectedIndex].value);this.selectedIndex=0;setFocus()">
<OPTION class="heading" SELECTED>Paragrafo</OPTION>
<OPTION VALUE="<P>">Normal <P></OPTION>
<OPTION VALUE="<H1>">Título 1 <H1></OPTION>
<OPTION VALUE="<H2>">Título 2 <H2></OPTION>
<OPTION VALUE="<H3>">Título 3 <H3></OPTION>
<OPTION VALUE="<H4>">Título 4 <H4></OPTION>
<OPTION VALUE="<H5>">Título 5 <H5></OPTION>
<OPTION VALUE="<H6>">Título 6 <H6></OPTION>
<OPTION VALUE="<PRE>">Pre <PRE></OPTION>
</SELECT> <SELECT NAME="Fontes" onChange="doFormat('fontname',this[this.selectedIndex].value);this.selectedIndex=0;setFocus()">
<OPTION class="heading" SELECTED>Fonte</OPTION>
<OPTION VALUE="Arial, Helvetica, sans-serif">Arial</OPTION>
<OPTION VALUE="Times New Roman, Times, serif">Times New Roman</OPTION>
<OPTION VALUE="Courier New, Courier, mono">Courier New</OPTION>
<OPTION VALUE="Georgia, Times New Roman, Times, serif">Georgia</OPTION>
<OPTION VALUE="Verdana, Arial, Helvetica, sans-serif">Verdana</OPTION>
<OPTION style="COLOR: navy" VALUE="CustomFont">Outra Fonte...</OPTION>
</SELECT> <SELECT NAME="Tamanhos" onChange="doFormat('fontSize',this[this.selectedIndex].text);this.selectedIndex=0;setFocus()">
<OPTION class="heading" SELECTED>Tam.</OPTION>
<OPTION>1</OPTION>
<OPTION>2</OPTION>
<OPTION>3</OPTION>
<OPTION>4</OPTION>
<OPTION>5</OPTION>
<OPTION>6</OPTION>
<OPTION>7</OPTION>
</SELECT> <SELECT NAME="Cores" onChange="doFormat('forecolor',this[this.selectedIndex].style.color);this.selectedIndex=0;setFocus()">
<OPTION class="heading" SELECTED>Cor</OPTION>
<OPTION style="COLOR: black">Preto</OPTION>
<OPTION style="COLOR: gray">Cinza</OPTION>
<OPTION style="COLOR: white">Branco</OPTION>
<OPTION style="COLOR: yellow">Amarelo</OPTION>
<OPTION style="COLOR: blue">Azul</OPTION>
<OPTION style="COLOR: green">Verde</OPTION>
<OPTION style="COLOR: red">Vermelho</OPTION>
<OPTION>Outra...</OPTION>
</SELECT> </TD>
</TR>
</TABLE>
<TABLE ID=editbar ONCLICK="setFocus()" width="610">
<TR>
<TD noWrap width="151"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Editor
de Textos</font></TD>
<TD noWrap width="448">
<INPUT TYPE="button" VALUE="N" STYLE="font-weight: 900;" ONCLICK="doFormat('Bold');setFocus();" class="botao">
<INPUT TYPE="button" VALUE="I" STYLE="font-style: italic;" ONCLICK="doFormat('Italic');setFocus();" class="botao">
<INPUT TYPE="button" VALUE="S" STYLE="text-decoration: underline;" ONCLICK="doFormat('Underline');setFocus();" class="botao">
<INPUT TYPE="button" class="botao" style="text-align: left;" ONCLICK="doFormat('JustifyLeft');setFocus();" VALUE="-- ">
<INPUT TYPE="button" VALUE="--" style="text-align: center;" ONCLICK="doFormat('JustifyCenter');setFocus();" class="botao">
<INPUT TYPE="button" class="botao" style="text-align: right;" ONCLICK="doFormat('JustifyRight');setFocus();" VALUE=" --">
<INPUT TYPE="button" VALUE="1." ONCLICK="doFormat('insertorderedlist');setFocus();" class="botao">
<INPUT TYPE="button" VALUE="•" ONCLICK="doFormat('insertunorderedlist');setFocus();" class="botao">
<INPUT TYPE="button" VALUE=">>" style="WIDTH: 25px" ONCLICK="doFormat('indent');setFocus();" class="botao">
<INPUT TYPE="button" VALUE="<<" style="WIDTH: 25px" ONCLICK="doFormat('outdent');setFocus();" class="botao">
<INPUT TYPE="button" VALUE="Link" style="WIDTH: 65px" ONCLICK="createLink();setFocus();" class="botao">
</TD>
</TR>
</TABLE>
<IFRAME ID=textEdit WIDTH="100%" HEIGHT="100" OnLoad="MudarTamanho()"></IFRAME>
<TABLE ID=editbar2 ONCLICK="setFocus()">
<TR>
<TD noWrap> <INPUT ID=mW TYPE="radio" NAME=rMode OnClick="setMode(true);" checked="checked">
<LABEL class="current" ID=modeA for=mW>Modo Visualizar</LABEL> <INPUT ID=mH TYPE="radio" NAME=rMode OnClick="setMode(false);">
<LABEL ID=modeB for=mH>Modo Editar</LABEL> </TD>
</TR>
<TR>
<TD noWrap><form name="form2"><input type="hidden" name="texto"></form><input type="button" value="Enviar" class="botao" style="WIDTH: 80px" onClick="envia();"></TD>
</TR>
</TABLE>
</BODY>
</HTML>
Salve o Código como por exemplo EditorDeTextos.htm para vc ver como fica.... :wink: