JEditorPane e código em HTML

Olá pessoal,

Estou tendo alguns problemas ao utilizar um JEditorPane:

  1. Gostaria de saber como faço para de obter o código fonte em HTML de uma página HTML aberta a partir do método setPage do JEditorPane.

  2. Pelo que estou percebendo, essa classe interpreta o HTML bruto e transforma-o em um modelo de representação interno ao JEditorPane, perdendo assim o vínculo entre o código HTML e a representação do mesmo. Isso está sendo um outro problema para mim, pois, por exemplo, ao selecionar um texto (ou posicionar o cursor) dentro do JEditorPane não consigo obter a posição da seleção no código HTML. Os métodos getSelectionEnd e getSelectionStart não satisfazem minhas necessidades, pois não se referem a posições no HTML em si e, sim, na página com as tags intepretadas. Existe uma solução para isso?

Se a página for externa e você carregou no JEditorPane basta ler a URL que você carregou como um InputStream.
Se o html foi montado você pode usar o método getPage() que retorna a URL sendo mostrada e depois getStream(URL) que retorna um InputSream com o conteúdo sendo mostrado. Se não funcionar use o método getEditorKit e a partir dele monte um HTMLEditorKit para fazer parsing do conteúdo do html.

[quote=“davimc”]
2) Pelo que estou percebendo, essa classe interpreta o HTML bruto e transforma-o em um modelo de representação interno ao JEditorPane, perdendo assim o vínculo entre o código HTML e a representação do mesmo. Isso está sendo um outro problema para mim, pois, por exemplo, ao selecionar um texto (ou posicionar o cursor) dentro do JEditorPane não consigo obter a posição da seleção no código HTML. Os métodos getSelectionEnd e getSelectionStart não satisfazem minhas necessidades, pois não se referem a posições no HTML em si e, sim, na página com as tags intepretadas. Existe uma solução para isso?[/quote]

no idea, mas qual o seu problema, porque você quer saber a posição no source do html?

Estou querendo fazer uma ferramenta de anotação onde o usuário seleciona vários trechos de texto de uma página HTML. Em seguida, essas informações são salvas em um arquivo XML a parte para a realização de processamento futuro. Preciso saber a posição exata no fonte HTML para que seja possível a realização desse processamento.

Com relação a solução que você deu ao problema 1. Isso não fará com que eu carrege (baixe) página HTML novamente? Caso sim, não seria melhor baixar o documento para um arquivo temporário e depois abri-lo pelo JEditorPane? Existe alguma outra opção em vez dessa do arquivo temporário?

[quote=“davimc”]Estou querendo fazer uma ferramenta de anotação onde o usuário seleciona vários trechos de texto de uma página HTML. Em seguida, essas informações são salvas em um arquivo XML a parte para a realização de processamento futuro. Preciso saber a posição exata no fonte HTML para que seja possível a realização desse processamento.

Com relação a solução que você deu ao problema 1. Isso não fará com que eu carrege (baixe) página HTML novamente? Caso sim, não seria melhor baixar o documento para um arquivo temporário e depois abri-lo pelo JEditorPane? Existe alguma outra opção em vez dessa do arquivo temporário?[/quote]

Quanto à anotação, não sei como fazer, você poderia ter acesso ao fonte usando o getEditorkit e fazer parsing do html com HTMLEditorkit para obter o fonte a partir de onde você selecionou…
Minha sugestão é que você dê uma olhada no fonte de um browser Java como o Jaxilla pra ver como eles tratam a seleção na tela…