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