1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
package test;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
public class TestTextPane extends javax.swing.JFrame implements ActionListener, PropertyChangeListener
{
private static final long serialVersionUID = 1L;
private final HTMLEditorKit htmlKit = new HTMLEditorKit();
private HTMLDocument htmlDoc = null;
private final javax.swing.JPanel frameContentPane = new javax.swing.JPanel();
private javax.swing.JButton Finish = null;
private javax.swing.JButton HTML = null;
private javax.swing.JButton newstyle = null;
private javax.swing.JLabel labmes = null;
private javax.swing.JTextField filename = null;
private javax.swing.JLabel Message = null;
private javax.swing.JTextPane myTextPane = null;
private javax.swing.JScrollPane scrollPane = null;
private static java.net.URL url = null;
private int selStart, selEnd;
public TestTextPane() {super();initialize();}
public void actionPerformed(java.awt.event.ActionEvent e)
{
try {
if (e.getSource() == Finish) { System.exit(0);}
if (e.getSource() == HTML) { loadHTML();}
if (e.getSource() == newstyle) { changeParagraphStyle();}
} catch (Exception ex) {}
}
private void initialize()
{
setName("TestTextPane");
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setSize(557, 451);
myTextPane = new javax.swing.JTextPane();
myTextPane.setName("myTextPane");
myTextPane.setBounds(0, 0, 11, 6);
HTML = new javax.swing.JButton();
HTML.setName("HTLM");
HTML.setText("Load ");
HTML.setBounds(66, 303, 99, 25);
newstyle = new javax.swing.JButton();
newstyle.setName("newStyle");
newstyle.setText("New Style");
newstyle.setBounds(225, 303, 99, 25);
Finish = new javax.swing.JButton();
Finish.setName("Finish");
Finish.setText("Finish");
Finish.setBounds(390, 303, 101, 25);
Message = new javax.swing.JLabel();
Message.setName("Message");
Message.setText(" ");
Message.setBounds(68, 283, 419, 14);
Message.setForeground(new java.awt.Color(255,0,0));
labmes = new javax.swing.JLabel();
labmes.setName("labmes");
labmes.setFont(new java.awt.Font("Arial", 1, 12));
labmes.setText("Load from URL");
labmes.setBounds(127, 256, 106, 14);
labmes.setForeground(java.awt.Color.black);
filename = new javax.swing.JTextField();
filename.setName("Pagename");
filename.setBounds(237, 252, 221, 20);
filename.setText("http://www.google.com/");
frameContentPane.setName("myFrame");
frameContentPane.setLayout(null);
scrollPane = new javax.swing.JScrollPane();
scrollPane.setName("scrollPane");
scrollPane.setBounds(23, 18, 513, 205);
scrollPane.setViewportView(myTextPane);
frameContentPane.add(scrollPane, scrollPane.getName());
frameContentPane.add(HTML, HTML.getName());
frameContentPane.add(newstyle, newstyle.getName());
frameContentPane.add(Finish, Finish.getName());
frameContentPane.add(Message, Message.getName());
frameContentPane.add(filename, filename.getName());
frameContentPane.add(labmes, labmes.getName());
setContentPane( frameContentPane);
HTML.addActionListener(this);
newstyle.addActionListener(this);
Finish.addActionListener(this);
java.awt.Dimension fenetre = this.getSize();
int sizex = fenetre.width, sizey = fenetre.height;
java.awt.Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screen.width - sizex) / 2,(screen.height - sizey) / 2, sizex, sizey);
myTextPane.setEditable(true);
myTextPane.setEditorKit(htmlKit);
myTextPane.setText("<html><body>Hello. Specify the HTML page to be loaded then click on the Load Button.</body></html>" );
myTextPane.addPropertyChangeListener(this);
this.setVisible(true);
}
private void loadHTML()throws Exception
{
Message.setText("");
try
{
htmlDoc = (HTMLDocument) myTextPane.getDocument();
String fn = filename.getText().trim();
if (fn== null || fn.equals("")){Message.setText("You need to enter the file to load. ");return; }
url = new java.net.URL(fn);
if (url==null) throw new java.io.IOException();
myTextPane.setPage(url);
myTextPane.requestFocus();
}
catch (Exception ex) {Message.setText( "Loading error.");}
}
public static void main(java.lang.String[] args) {new TestTextPane();}
public void propertyChange(PropertyChangeEvent evt)
{
String propertyName = evt.getPropertyName();
System.out.println(propertyName); // for debugging purpose
if (propertyName.equals("page")|| propertyName.equals("document"))
{
System.out.println("The HTML page is loaded ...");
myTextPane.setCaretPosition(0);
myTextPane.getCaret().setDot(0);
myTextPane.setSelectionStart(0);
myTextPane.setSelectionEnd(1);
myTextPane.getCaret().setSelectionVisible(true);
myTextPane.requestFocus();
Message.setText("File loaded successfully...");
}
}
public void changeParagraphStyle()
{
try
{
String selText = myTextPane.getSelectedText();
if (selText == null ) {Message.setText("No selected field for new style"); return ; } // aucune ligne sélectionnée
Message.setText("");
selStart = myTextPane.getSelectionStart();
selEnd = myTextPane.getSelectionEnd();
Style defaultStyle = myTextPane.getStyle(StyleContext.DEFAULT_STYLE);
Style style = myTextPane.addStyle("paragraph", defaultStyle);
StyleConstants.setBold(style, true);
StyleConstants.setFontSize(style, 14);
StyleConstants.setFontFamily(style, "Serif");
StyleConstants.setItalic(style, true);
StyleConstants.setUnderline(style, true);
StyleConstants.setForeground(style, new Color(0,0,255));
myTextPane.setParagraphAttributes( style, true);
}
catch (Exception ex )
{
Message.setText("Error when changing style");
System.out.println(ex.toString());
}
}
} |
Partager