정확하게이 문제가 있습니다. 내 스팬 요소가 사라집니다. div를 사용하는 경우 해당 항목을 볼 수 있습니다. 물론 div 요소가 필요하지는 않습니다. 줄 바꿈이 생기기 때문입니다.
젠장! 망할 자바.
편집!
보도를 중단하십시오!
답을 찾았습니다. 최소한, 나를 위해 그것을 해결하는 대답.
나는 아직도 내가 내 스팬 요소를 가지고 있음을 확인할 수 있었다. 나는 내가하고있는 일을 기술 할 것이고, 내가 어떻게했는지에 대한 코드를 제공 할 것이다.
나는 캐럿이있다. 그래서,이 코드는 캐럿 위치가 이동 때마다 저를 제공하는 caretUpdate 기능, 내 존재하는 어떤 요소를 알고 싶어요.
@Override
public void caretUpdate(CaretEvent e)
{
System.out.println("caret event: " + e.toString());
Object source = e.getSource();
if (source instanceof JEditorPane)
{
JEditorPane jep = (JEditorPane)source;
Document doc = jep.getDocument();
if (doc instanceof HTMLDocument)
{
HTMLDocument hdoc = (HTMLDocument)doc;
int pos = e.getDot();
Element elem = hdoc.getCharacterElement(pos);
AttributeSet a = elem.getAttributes();
AttributeSet spanAttributeSet = (AttributeSet)a.getAttribute(HTML.Tag.SPAN);
// if spanAttributeSet is not null, then we properly found ' a span '.
// now we need to discover if it is one of OUR spans
if (spanAttributeSet!=null)
{
Object type = spanAttributeSet.getAttribute(HTML.Attribute.TYPE);
if (type !=null && type.equals("dragObject"))
{
// for our logging, we get the ref, which holds the source
// of our value later
System.out.println("the value is: " + spanAttributeSet.getAttribute("ref"));
}
}
}
}
}
편집 !!! ...이 거의 일의 바보를 제외하고 ... 작동
스크래치는 열쇠가 HTML.Attribute으로 될 거라고 결정했다. 뿐만 아니라, HTML.Attribute의 생성자가 private이기 때문에 원하는 특성 형식이 해당 특성 집합의 특성 집합 내에 존재하지 않게됩니다. 나쁜 놈들! 그래서 모든 것이 손실되지 않습니다 ... 나는 열거자를 통해 그것을 얻을 수 있습니다 ..그러나 그것이 필요했던 것보다 조금 더 어렵습니다.
마지막 편집!
이제 알겠습니다. 속성이 기존의 형태의 경우는 AttributeSet에 HTML.Attribute ("type")의 인스턴스로서 포함됩니다. 그렇지 않으면 AttributeSet에 'String'을 키로 저장합니다. 어리 석다. 그러나 나는 거기에있다.
좋은 아이디어, 불행히도 스윙의 HTMLDocument는 HTML에 대한 제한된 지원 인 것으로 보입니다. 아마도 필자의 풍부한 텍스트 요구 사항을 표시하기 위해 다른 GUI 요소를 찾아야 할 것입니다. –