• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

作業部屋の使い方を試しています。


Commit MetaInfo

Revision9 (tree)
Time2014-06-04 18:26:04
Authortuna_p

Log Message

(empty log message)

Change Summary

Incremental Difference

--- HtmlTest1/src/htmltest1/HtmlParser.java (revision 8)
+++ HtmlTest1/src/htmltest1/HtmlParser.java (revision 9)
@@ -5,9 +5,15 @@
55 */
66
77 package htmltest1;
8+
89 import java.io.*;
910 import java.net.*;
11+import java.util.HashMap;
1012
13+import javax.swing.text.*;
14+import javax.swing.text.html.*;
15+import javax.swing.text.html.parser.ParserDelegator;
16+
1117 /**
1218 *
1319 * @author kgto
@@ -50,4 +56,101 @@
5056 System.err.println(e);
5157 }
5258 }
59+
60+ public void exec2(){
61+ Reader reader;
62+ try {
63+ reader = new BufferedReader(new StringReader(pageData));
64+ // ここを検索したいタグ分繰り返せばいいのだろうか?
65+ MyParserCallback cb = new MyParserCallback();
66+ ParserDelegator pd = new ParserDelegator();
67+ pd.parse(reader, cb, true);
68+
69+ reader.close();
70+
71+ } catch (IOException e) {
72+ System.err.println(e);
73+ }
74+
75+
76+ }
77+
78+ class MyParserCallback extends HTMLEditorKit.ParserCallback {
79+
80+ // Tag毎の階層
81+ HashMap<HTML.Tag,Integer> map = new HashMap<HTML.Tag,Integer>();
82+
83+ @Override
84+ public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attr, int pos){
85+
86+
87+ StringBuffer strBuf = new StringBuffer();
88+ String ret;
89+
90+ strBuf.append("x : S : " + tag.toString());
91+ ret = (String)attr.getAttribute(HTML.Attribute.VALUE);
92+ if(ret != null) {
93+ strBuf.append(" [VALUE] " + ret);
94+ }
95+ System.out.println(strBuf);
96+
97+ }
98+
99+ @Override
100+ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attr, int pos){
101+ // Tag毎の階層を保持
102+ int count = 1;
103+ if(map.containsKey(tag)) {
104+ count = map.get(tag);
105+ count++;
106+ }
107+ map.put(tag, count);
108+
109+
110+ StringBuffer strBuf = new StringBuffer();
111+ String ret;
112+
113+ strBuf.append(count + " : F : " + tag.toString());
114+ ret = (String)attr.getAttribute(HTML.Attribute.ID);
115+ if(ret != null) {
116+ strBuf.append(" [ID] " + ret);
117+ }
118+ ret = (String)attr.getAttribute(HTML.Attribute.CLASS);
119+ if(ret != null) {
120+ strBuf.append(" [CLASS] " + ret);
121+ }
122+ ret = (String)attr.getAttribute(HTML.Attribute.VALUE);
123+ if(ret != null) {
124+ strBuf.append(" [VALUE] " + ret);
125+ }
126+ System.out.println(strBuf);
127+
128+ }
129+
130+ @Override
131+ public void handleEndTag(HTML.Tag tag, int pos){
132+ // Tag毎の階層を取得
133+ int count = 0;
134+ if(map.containsKey(tag)) {
135+ count = map.get(tag);
136+ }
137+
138+
139+
140+
141+ System.out.println(count + " : E : " + tag.toString());
142+
143+ // Tag毎の階層減算
144+ map.put(tag, --count);
145+ }
146+
147+ @Override
148+ public void handleText(char[] data, int pos){
149+
150+ String dat = new String(data);
151+ System.out.println(dat);
152+
153+ }
154+ }
155+
53156 }
--- HtmlTest1/src/htmltest1/Htmlt1Frame.java (revision 8)
+++ HtmlTest1/src/htmltest1/Htmlt1Frame.java (revision 9)
@@ -6,7 +6,8 @@
66
77 package htmltest1;
88
9-import javax.swing.JTextArea;
9+//import javax.swing.JTextArea;
10+import javax.swing.*;
1011 import java.io.*;
1112
1213 /**
@@ -36,6 +37,7 @@
3637 jLabel1 = new javax.swing.JLabel();
3738 jTextField1 = new javax.swing.JTextField();
3839 jButton1 = new javax.swing.JButton();
40+ jTabbedPane1 = new javax.swing.JTabbedPane();
3941 jScrollPane1 = new javax.swing.JScrollPane();
4042 jTextArea1 = new javax.swing.JTextArea();
4143 jScrollPane2 = new javax.swing.JScrollPane();
@@ -63,10 +65,14 @@
6365 jTextArea1.setRows(5);
6466 jScrollPane1.setViewportView(jTextArea1);
6567
68+ jTabbedPane1.addTab("tab1", jScrollPane1);
69+
6670 jTextArea2.setColumns(20);
6771 jTextArea2.setRows(5);
6872 jScrollPane2.setViewportView(jTextArea2);
6973
74+ jTabbedPane1.addTab("tab2", jScrollPane2);
75+
7076 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
7177 getContentPane().setLayout(layout);
7278 layout.setHorizontalGroup(
@@ -74,11 +80,10 @@
7480 .addGroup(layout.createSequentialGroup()
7581 .addComponent(jLabel1)
7682 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
77- .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)
83+ .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 319, Short.MAX_VALUE)
7884 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
7985 .addComponent(jButton1))
80- .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 398, Short.MAX_VALUE)
81- .addComponent(jScrollPane2)
86+ .addComponent(jTabbedPane1)
8287 );
8388 layout.setVerticalGroup(
8489 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -88,9 +93,7 @@
8893 .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
8994 .addComponent(jButton1))
9095 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
91- .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 147, javax.swing.GroupLayout.PREFERRED_SIZE)
92- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
93- .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE))
96+ .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 283, Short.MAX_VALUE))
9497 );
9598
9699 pack();
@@ -104,6 +107,7 @@
104107 //jTextArea1.append(jTextField1.getText());
105108 psr = new HtmlParser(jTextField1.getText());
106109 psr.exec();
110+ psr.exec2();
107111 jTextArea1.setText(psr.pageData);
108112 // disp_jTextArea1();
109113 }//GEN-LAST:event_jButton1ActionPerformed
@@ -132,12 +136,17 @@
132136 * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
133137 */
134138 try {
135- for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
139+ for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
136140 if ("Nimbus".equals(info.getName())) {
137- javax.swing.UIManager.setLookAndFeel(info.getClassName());
141+ UIManager.setLookAndFeel(info.getClassName());
138142 break;
139143 }
140144 }
145+ // add start
146+ String look = UIManager.getSystemLookAndFeelClassName();
147+ UIManager.setLookAndFeel(look);
148+ // add end
149+
141150 } catch (ClassNotFoundException ex) {
142151 java.util.logging.Logger.getLogger(Htmlt1Frame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
143152 } catch (InstantiationException ex) {
@@ -156,6 +165,23 @@
156165 }
157166 });
158167 }
168+ /**
169+ * 外観をOSのものに似せる
170+ * <p>
171+ * (WindowsならWindowsの外観に似る)
172+ * </p>
173+ */
174+ private void initLookFeel() {
175+ try {
176+ String look =
177+ // "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
178+ UIManager.getSystemLookAndFeelClassName();
179+ UIManager.setLookAndFeel(look);
180+ } catch (Exception e) {
181+ // 駄目なときは諦める
182+ e.printStackTrace();
183+ }
184+ }
159185
160186 // Variables declaration - do not modify//GEN-BEGIN:variables
161187 private javax.swing.JButton jButton1;
@@ -162,6 +188,7 @@
162188 private javax.swing.JLabel jLabel1;
163189 private javax.swing.JScrollPane jScrollPane1;
164190 private javax.swing.JScrollPane jScrollPane2;
191+ private javax.swing.JTabbedPane jTabbedPane1;
165192 private javax.swing.JTextArea jTextArea1;
166193 private javax.swing.JTextArea jTextArea2;
167194 private javax.swing.JTextField jTextField1;