最近、JXBrowserを使用して距離編集のビジュアライゼーション(Levenshtein)を構築し始めました。私はJXBrowserを使ってJAVAとHTML、CSS、JSを統合しています。NULL例外を処理するのが難しく、JXBrowser内でHTMLを変更する
私のアプリケーションは、開始画面、特にhello.htmlを読み込むことでMainFrameクラスから始まります。
public MainFrame() {
final Browser browser = new Browser();
BrowserView view = new BrowserView(browser);
JFrame frame = new JFrame("JxBrowser - EditDistance");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(view, BorderLayout.CENTER);
frame.setSize(500, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
InputStream urlStream = getClass().getResourceAsStream("../web/hello.html");
String html = null;
try (BufferedReader urlReader = new BufferedReader(new InputStreamReader (urlStream))) {
StringBuilder builder = new StringBuilder();
String row;
while ((row = urlReader.readLine()) != null) {
builder.append(row);
}
html = builder.toString();
} catch (IOException e) {
throw new RuntimeException(e);
}
browser.loadHTML(html);
DOMDocument document = browser.getDocument();
final DOMElement documentElement = document.getDocumentElement();
if (documentElement != null) {
try{
DOMElement element = documentElement.findElement(By.id("button"));
element.addEventListener(DOMEventType.OnClick, new DOMEventListener() {
public void handleEvent(DOMEvent event) {
new UserInput();
}
}, false);
}catch(NullPointerException e){
System.out.println("NULLL on Entry");
}
}
}
次に、UserInput()を呼び出すと、Nullエラーがスローされません。 UserInputForm.htmlを私のビューとして使用する代わりに、上記と同じ方法を使用してUserInputFormクラスをロードします。
InputStream urlStream = getClass().getResourceAsStream("../web/UserInputForm.html");
String html = null;
try (BufferedReader urlReader = new BufferedReader(new InputStreamReader (urlStream))) {
StringBuilder builder = new StringBuilder();
String row;
while ((row = urlReader.readLine()) != null) {
builder.append(row);
}
html = builder.toString();
} catch (IOException e) {
throw new RuntimeException(e);
}
browser.loadHTML(html);
final DOMDocument document = browser.getDocument();
final DOMElement documentElement = document.getDocumentElement();
if (documentElement != null) {
DOMElement submitElement = documentElement.findElement(By.id("enterButton"));
if (submitElement != null) {
submitElement.addEventListener(DOMEventType.OnClick, new DOMEventListener() {
public void handleEvent(DOMEvent event) {
DOMElement source = document.findElement(By.id("sourceString"));
DOMElement target = document.findElement(By.id("targetString"));
}}, false);
}
else{
System.out.println("NULL on Sub Form");
}
}
}
この問題は、主にUserInputFormが読み込まれるときに発生します。私は、submitElementドキュメント要素によって返されるNULLを取得します。場合によっては、アプリケーションの起動時にNULLが返されることがあります。私はこれらのフォームを読み込む際に基本的な手順が欠けているように感じます。誰もがドキュメント要素がNULLを返さないようにするための洞察を持っていますか?これは私のHTML読み込みテクニックの問題ですか?
こんにちはアンナは - あなたに感謝します。私はNULLの問題を取り除くことができました。 –
リンクのみ回答を投稿しないでください。リンクが移動または取り外されたときに、リンクが腐敗する可能性があります。あなたの答えに完全なコードと解決策を追加してください。 – Tschallacka
@tschallackaこれを指摘してくれてありがとう。私は必要な情報で私の答えを更新しました。 –