For an initial attempt I made a screen with two buttons and an output area using a JEditorPane, the buttons are made from links and the output area is made from a document element.
HtmlText.java:
package ca.sarah_happy.sandbox;
import java.awt.Dimension;
import java.net.URL;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Element;
import javax.swing.text.html.HTMLDocument;
public class HtmlText implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new HtmlText());
}
private JEditorPane viewer;
private HTMLDocument document;
@Override
public void run() {
try {
URL text = HtmlText.class.getResource("screen.html");
viewer = new JEditorPane(text);
viewer.setEditable(false);
viewer.setPreferredSize(new Dimension(400, 300));
JFrame frame = new JFrame("screen");
frame.setContentPane(new JScrollPane(viewer));
frame.pack();
frame.setLocationByPlatform(true);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
document = (HTMLDocument) viewer.getDocument();
viewer.addHyperlinkListener(onLink);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
private HyperlinkListener onLink = new HyperlinkListener() {
@Override
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED) {
return;
}
String message = "pressed <" + e.getDescription() + ">";
try {
Element out = document.getElement("output");
document.insertString(out.getEndOffset() - 1,
message + "\n", null);
} catch (BadLocationException ex) {
ex.printStackTrace();
}
}
};
}
screen.html:
<html><body> This is a test. <p><a href="#link1">link 1</a> <a href="#link2">link 2</a></p> <p>output: <div id="output"></div> </p> </body></html>
No comments:
Post a Comment