- - PR -
swingのElement(Tree)について
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-07-30 18:02
前に投稿したryuです、連続的ですいません、追記で知りたい事がありましたので
質問させてください。 SwingでHTMLのソースをPanelにaddして、そのElementの奥に再起関数で潜っていったのですが、 途中でgetClass().getName()とtoString()でデータを取っていきました。 出てきたのは javax.swing.text.HTML&Attribute:type java.lang.String:submit とsubmitボタンのデータがでてきました、ここまではOKなんですが 実はセットしたHTMLにはsubmitとresetの二つのボタンが ありまして、デバッグデータで出てくる順番は name:input → name:(フィールド名) →form:method=post action=アクション名 type:submit model:javax--- value:値 と本には書いてあるのですがデバッグしたところFormと type:submitの部分が 表示されないのです、 無視される原因はなんなのでしょうか? 何か知っていましたらヒントをお願いします。 | ||||
|
投稿日時: 2004-07-30 18:22
文章だけだとよくわからないので、
・HTMLのソース ・出力部分のJavaソース ・出力結果 を貼り付けてみてください。 これは余談ですが、送信する前にご自分で読み返してみて読み手がわかる文章になっているか どうかチェックしたほうがいいと思いますよ。 | ||||
|
投稿日時: 2004-07-30 19:34
すいません、確かにわかりずらい文章です(汗
出力結果はこんな感じです //----------------------------------------------------------------------------- Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1:1 o = javax.swing.text.StyleConstants: name v = javax.swing.text.html.HTML$Tag: html ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ jamp Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2:2 o = javax.swing.text.StyleConstants: name v = javax.swing.text.html.HTML$Tag: head ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ jamp Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 3:3 o = javax.swing.text.StyleConstants: name v = javax.swing.text.html.HTML$Tag: p-implied ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ jamp Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4:4 o = javax.swing.text.StyleConstants: name v = javax.swing.text.html.HTML$Tag: content ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ jamp Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 5:5 o = javax.swing.text.StyleConstants: name v = javax.swing.text.html.HTML$Tag: body ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ jamp Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6:6 o = javax.swing.text.html.HTML$Attribute: action v = java.lang.String: aaa ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6:7 o = javax.swing.text.StyleConstants: name v = javax.swing.text.html.HTML$Tag: form ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6:8 o = javax.swing.text.html.HTML$Attribute: name v = java.lang.String: test ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6:9 o = javax.swing.text.html.HTML$Attribute: method v = java.lang.String: post ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ jamp Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 7:10 o = javax.swing.text.StyleConstants: name v = javax.swing.text.html.HTML$Tag: p-implied ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ jamp Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 8:11 o = javax.swing.text.StyleConstants: model v = javax.swing.DefaultButtonModel: javax.swing.DefaultBu ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 8:12 o = javax.swing.text.html.HTML$Attribute: type v = java.lang.String: submit ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 8:13 o = javax.swing.text.StyleConstants: name v = javax.swing.text.html.HTML$Tag: input ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 8:14 o = javax.swing.text.html.HTML$Attribute: name v = java.lang.String: $10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 8:15 o = javax.swing.text.html.HTML$Attribute: value v = java.lang.String: OK ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ jamp Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 9:16 o = javax.swing.text.StyleConstants: model v = javax.swing.DefaultButtonModel: javax.swing.DefaultBu ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 9:17 o = javax.swing.text.html.HTML$Attribute: type v = java.lang.String: reset ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 9:18 o = javax.swing.text.StyleConstants: name v = javax.swing.text.html.HTML$Tag: input ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 9:19 o = javax.swing.text.html.HTML$Attribute: name v = java.lang.String: $11 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 9:20 o = javax.swing.text.html.HTML$Attribute: value v = java.lang.String: Cancel ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ jamp Line-184^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 10:21 o = javax.swing.text.StyleConstants: name v = javax.swing.text.html.HTML$Tag: content ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //---------------------------------------------------------------------------- javaソースはこう書きました import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.*; import javax.swing.event.*; import javax.swing.text.html.*; import javax.swing.tree.*; import java.util.*; public class Main extends BasicWindow4{ JEditorPane html; String htmlText = "<html><body><form name=test action=aaa method=post>" + " <input type=submit name=$10 value=OK> " + " <input type=reset name=$11 value=Cancel> " + "</form></body>" ; String ByourekiSouce=htmlText; String SousyouSouce=Sousyou.test; String IsiSouce=Isi.test; public static void main(String[] args) { Main frame = new Main( "Main",0 ); frame.setDefaultCloseOperation(3); // EXIT_ON_CLOSE frame.setSize( 400, 600 ); frame.setVisible( true ); } Main( String title,int ui ){ super(title,ui); html = new JEditorPane( "text/html", htmlText ); Container pane = getContentPane(); pane.add( html ); Document doc = html.getDocument(); getAction( doc.getDefaultRootElement() ); } static boolean submit=false; static int count=0,loop=0; void getAction( Element e ){ count++; AttributeSet aSet = e.getAttributes(); Enumeration enum = aSet.getAttributeNames(); while( enum.hasMoreElements() ) { loop++; Object o = enum.nextElement(); Object v = aSet.getAttribute( o ); System.out.println(^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); System.out.println(count+":"+loop); System.out.println("o = " + o.getClass().getName() + ": " + o.toString()); System.out.println("v = " + v.getClass().getName() + ": " + v.toString()); System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); } //--------- Elementの階層を下へ再帰的に辿っていく for( int i = 0 ; i < e.getElementCount() ; i++ ) { System.out.println("jamp"); getAction( e.getElement(i) ); } } class CheckAction implements ActionListener { public void actionPerformed( ActionEvent e ){ System.out.println( "action from OK" ); } } } いらない所は端折ったので変なところがあると思いますが。 これを実行すると Object o = enum.nextElement(); Object v = aSet.getAttribute( o );を System.out.printlnしたものがDOSにでまして 表示結果が javax.swing.text.HTML&Attribute:type java.lang.String:submit とか表示されるのですが、二つ表示されるはずが一つしか出ない という状況になってます。 本などを見ると表示結果は javax.swing.text.HTML&Attribute:name java.lang.String:input javax.swing.text.HTML&Attribute:name java.lang.String:submit $11 javax.swing.text.HTML&Attribute:form java.lang.String:method=post action=aaa javax.swing.text.HTML&Attribute:type java.lang.String:submit javax.swing.text.HTML&Attribute:model java.lang.String:javax.swing.DefaultButtonModel@4025c50 javax.swing.text.HTML&Attribute:value java.lang.String:OK と表示されるらしいのですが 自分が作ったコードだと javax.swing.text.HTML&Attribute:type java.lang.String:submit が表示されず javax.swing.text.HTML&Attribute:value java.lang.String:OK と最後にでて、もう一つのボタンresetは ちゃんと表示されるという状況です。 自分でもコードを変えて見まして ExtendsしているBasicWindow4というのを JFrameに変えてみたところ、うまく動作するようになったのですが 納得できてないままなのでBBSに書き込ましてください(汗 BasicWindow4はBasicWindow1,2,3を継承していまして、内容は ContainerPaneとかをコンストラクタでNewしていたりしてます。 importしているものは import java.awt.*; import java.awt.event.*; import javax.swing.*; 1,2,3、4とも同じです BasicWindowだけ載せておきます、後のはこれを拡張したやつなんですが 長いのでやめときます(汗 public class BasicWindow extends JFrame { protected JMenuBar menuBar; protected Container pane; protected JToolBar toolBar; protected JMenu menu=null; public static void main(String[] args) { BasicWindow w=new BasicWindow("Basic Window",0); w.setSize(500,300); w.setVisible(true); } public BasicWindow(String title,int ui) { super(title); setupUI(ui); menuBar=new JMenuBar(); setJMenuBar(menuBar); pane=getContentPane(); toolBar=new JToolBar(); pane.add(toolBar,BorderLayout.NORTH); } protected void setupUI(int ui) { addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);} }); try{ UIManager.setLookAndFeel( "com.sun.java.swing.plaf.metal.metalLookAndFeel"); SwingUtilities.updateComponentTreeUI(this); } catch(UnsupportedLookAndFeelException e){ } catch(ClassNotFoundException e){ } catch(InstantiationException e){ } catch(IllegalAccessException e){ } } } 長すぎてすいません・・・。 | ||||
|
投稿日時: 2004-07-30 19:45
| ||||
1
