JEditorPaneでHTMLの表示完了の通知を得ることはできますか?

このQ&Aのポイント
  • JEditorPaneでHTMLの表示完了の通知を得る方法について調査しましたが、情報は見つかりませんでした。
  • JEditorPaneでHTMLを読み込んだ後、表示が完了するまで待つ方法についての情報は見つかりませんでした。
  • JEditorPaneを使用してHTMLを読み込んだ場合、表示が完了したかどうかを確認する方法は提供されていませんでした。
回答を見る
  • ベストアンサー

JEditorPaneでHTMLの表示完了の通知を得ることはできますか?

たとえば、Perlだと、 Win32::OLEを使用するときに、 my $url = 'http://www.goo.ne.jp/'; my $ie = Win32::OLE->new ('InternetExplorer.Application'); $ie->{Visible} = 1; $ie->Navigate($url); #通信中はループで待ってやる# while($ie->Busy){ sleep 5; } #以下その後の処理# って感じで、通信中は処理を待ってやることができますが、JAVAのJEditorPaneでHTMLを読み込んだときに、 同じようなことはできるのでしょうか? 読み込んだHTMLをJEditorPaneにきっちり表示が完了するまで次の処理を待つ、つまり表示完了の通知を得るまで待つにはどうすればいいのでしょう?? いろいろ検索してみたのですが、今のところひっかかりません。ヒントや、参考ページでもかまいませんので、おしえていただけませんか?? import java.awt.*; import java.net.*; import javax.swing.*; public class test extends JFrame{ static JEditorPane je; test(){ try{ URL url = new URL("http://www.goo.ne.jp"); je = new JEditorPane(); je.setPage(url); }catch(Exception e){ System.out.println(e); } je.setEditable(false); getContentPane().add(je); } public static void main(String args[]) { test app = new test(); app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); app.setSize( 400, 400 ); app.setVisible( true ); /* ここで、gooのページがJEditorPaneにきっちり表示されるまで、 次の処理へと進まずに待たせたい。*/ /*どのように書けばいいのでしょう??*/ } }

  • omni2
  • お礼率93% (46/49)
  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

ドキュメントに書いてあります。 http://java.sun.com/j2se/1.4/ja/docs/ja/api/javax/swing/JEditorPane.html#setPage(java.net.URL)

omni2
質問者

お礼

回答ありがとうございます。 えーと、、いつのまにか、解決してました。

関連するQ&A

  • JEditorPaneで表示したHTMLを、初期化/変更するには

    プログラム中で生成したHTMLを随時、JEditorPaneに表示しようとしています。また、表示したHTMLをすべて消す(初期化する)こともあります。 以下のようなコードを書いたのですが、うまくいきません。 1.画面が初期化されませんし、初期化した後は追加もされなくなります。 2.追加するとHTMLタグが解釈されずに、そのまま表示されます。 どうすればよいでしょうか? import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; //4openURL import java.awt.Desktop; import java.net.URI; import javax.swing.text.*; import javax.swing.text.html.HTMLDocument; class tstFrame extends JFrame { private final String strHead = "<HTML>" + "<HEAD>" + "<META http-equiv=\"Content-Type\" content=\"text/html\">" + "</HEAD>"; private String strBgColor = "#CCCCCC"; // private String strHTML = "<html><body bgcolor=\"#CCCCFF\">google<br><br><a href=\"http://www.google.co.jp/\">click here!!</a>"; // //ログ表示部 javax.swing.JEditorPane jEdtLogHtml; JButton jbtnA = new JButton ("追加"); JButton jbtnC = new JButton ("変更"); public tstFrame(){ getContentPane().setLayout(new FlowLayout()); //実際にログを表示する窓 jEdtLogHtml = new javax.swing.JEditorPane("text/html" , strHTML); this.getContentPane().add(new JScrollPane(jEdtLogHtml)); jbtnA.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ java.util.Date d = new java.util.Date(); addText("<font color=\"#FFFFFF\">"+d.toString()+"</font>" ); } }); jbtnC.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ initALL(); } }); this.getContentPane().add(jbtnA); this.getContentPane().add(jbtnC); this.setSize(400 , 400); this.setVisible(true); // jEdtLogHtml.setEditable(false); } // 画面を初期化する public void initALL(){ //??? jEdtLogHtml = new javax.swing.JEditorPane("text/html" , strHTML); } // 文字列をログに追加する public void addText(String argStrlog){ jEdtLogHtml.setContentType("text/html"); HTMLDocument doc = (HTMLDocument)jEdtLogHtml.getDocument(); SimpleAttributeSet sas = new SimpleAttributeSet(); try{ doc.insertString(doc.getLength(), argStrlog+"\n", sas); }catch(BadLocationException e) { e.printStackTrace(); } jEdtLogHtml.setContentType("text/html"); this.setVisible(true); } public static void main(String[] args) { new tstFrame().setVisible(true); } }

  • JFrame の再表示を禁止したい。

    親ウィンドウのボタンを押して、子ウインドウが表示される仕組みなのですが、1 つ表示した後は、 表示させないようにしたいと考えコードを組みましたが、以下コードでは、null 例外が出てしまいます。 良い方法はありませんでしょうか? みなさん、どうぞよろしくお願い致します。 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class FramesTest { public static void main(String[] args) { JFrame frameMain = new JFrame("Main"); frameMain.setSize(256, 128); frameMain.getContentPane().add( new BT() ); frameMain.setVisible(true); } } class BT extends JPanel implements ActionListener { /** * */ private static final long serialVersionUID = 1L; /*-------------------------* * Variables. * *-------------------------*/ static String cmdName; static JButton button; static JFrame subJFrame; /*-------------------------* * Methods. * *-------------------------*/ BT() { super( new BorderLayout() ); button = new JButton("button"); button.addActionListener(this); add( button ); setPreferredSize(new Dimension(320, 100)); } void createFrame() { subJFrame = new JFrame( "sub" ); subJFrame.setVisible(true); subJFrame.setSize(256, 128); } @Override public void actionPerformed(ActionEvent e) { cmdName = e.getActionCommand(); if ("button".equals(cmdName)) { if ( !subJFrame.isActive() ) { createFrame(); } } } }

    • ベストアンサー
    • Java
  • 実行してもタイトルバーしか表示されません

     JAVAの初心者です。  "Public JFramelTest(){"の箇所で"メソッドの戻りの型がありません"とエラーがでます。  しかし実行はできるので、実行するとダイヤログは表示されますが、タイトルバーのみしか、表示されません。  サイズを大きくすると文字はかけていますが、タイトルバーには"JFrame Test"の文字は有りません。  一体どこが悪いのでしょうか宜しくお願いします。 ============================================================================= //JFrameTest:Swingのフレーム import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JFrameTest extends JFrame{ /* コンストラクタ */ public JFramelTest(){ setSize(800,400); //画面サイズ setTitle("JFrame Test"); //タイトル //×ボタンで終了 addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } //paint public void paint(Graphics g){ super.paint(g); //JFrameクラスのpaintの呼出し g.drawString("JAVA",80,100); } //main public static void main(String[] args) { JFrame w = new JFrameTest(); w.show(); } }

    • ベストアンサー
    • Java
  • ボタンが表示されません

    //テキストパッドをつくっています。 //このプログラムはボタンが表示されませんなぜ? import java.awt.*; import javax.swing.*; class Test_Text extends JFrame{ public static void main(String args[]){ Sample_text st = new Sample_text(); JFrame jf = new JFrame("Test_Text"); JTextArea jt = new JTextArea(50,30); Container c = jf.getContentPane(); c.add(jt,BorderLayout.PAGE_START); jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(EXIT_ON_CLOSE); } public void Sample_text(){ JButton j1,j2; j1 = new JButton("編集"); j2 = new JButton("保存"); setLayout(new FlowLayout()); this.add(j1); this.add(j2); } }

  • swingでのHTMLの表示

    JEditorPaneクラスにHTMLEditorKitクラスをセットして、 以下のようなHTMLを表示しようとしているのですが、スタイルシートでの画像の読み込みや、tableタグのbackgroundがうまく動きません。 javaソースでは、setTextメソッドにてHTMLを読みこんでおります。 どなたかご存知の方、ご教授していただけないでしょうか。 よろしくお願いします。 ・スタイルシート内 table.abc{ background-image: url(file:/C:/img/abc.jpg); } ・HTMLドキュメント内のテーブルタグ <table class="abc"> <tr> <td>1234567890</td> </tr> </table> <table background ="file:/C:/img/abc.jpg"> <tr> <td>1234567890</td> </tr> </table> ・javaソース tArea = new JEditorPane(); tArea.setContentType("text/html"); //$NON-NLS-1$ tArea.setEditable(false); tArea.setMargin(new Insets(5, 10, 5, 10)); StyleSheet styleSheet = new StyleSheet(); try { Reader reader = new InputStreamReader(ClassLoader.getSystemResourceAsStream(CSS)); styleSheet.loadRules(reader, ClassLoader.getSystemResource(CSS)); reader.close(); } catch(IOException ie) { ie.printStackTrace(); } HTMLEditorKit kit = new HTMLEditorKit(); styleSheet.addStyleSheet(kit.getStyleSheet()); kit.setStyleSheet(styleSheet); //kit.getStyleSheet().addStyleSheet(styleSheet); tArea.setEditorKit(kit); copy = new CopyAction(); copy.setEnabled(false); selectAll = new SelectAllAction();

  • javaのpanelが表示されません

    下記のプログラムを作ったんですが、eclipseで実行するとフレームは表示されますが、空のフレームのような状態で、panelやボタンなどは表示されません。mainとは別のクラスで作成してるからなんでしょうか?よろしくお願いします。 import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class Table0 { public static void main(String[] args) { new Frame0(); } } class Frame0{ JFrame frame; JPanel panel; JScrollPane jsp; JTable table; DefaultTableModel dtm; public Frame0(){ frame=new JFrame("table"); frame.setBounds(30, 30, 300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); table=new JTable(8,5); jsp=new JScrollPane(table); jsp.setPreferredSize(new Dimension(250, 70)); panel=new JPanel(); panel.add(jsp); Container c=frame.getContentPane(); c.add(panel,BorderLayout.CENTER); } }

    • ベストアンサー
    • Java
  • 簡単なこーどですが、エラーの原因が分かりません

    今晩は、JAVAの初心者です、宜しくお願いします。 下のコードでエラーがでます、いくら考えても原因がさっぱり分かりません。 一体何処が悪いのでしょうか、宜しくお願いします。 また、最後の「j.show();」では警告が出ています。 何が原因でしょう?? ============================================================ import java.awt.Graphics; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; class JFrame_Ohayou extends JFrame implements WindowListener{ /*********** コンストラクタ ********************/ public JFrame_Ohayou(){ setSize(400,300); setTitle("JFrameのテスト"); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } /******************* paint ***********************/ public void paint(Graphics g){ super.paint(g); g.drawString("おはよう",20,40); } } /******************* main ***********************/ public class JFrameTest{ public static void main(String[] args){ JFrame_Ohayou j = new JFrame_Ohayou(); j.show(); } } =============================================================

    • ベストアンサー
    • Java
  • cadで作った図面をフレーム上で表示

    こんばんは いつもお世話になっています。 gif形式の図を表示することはできるのですが AutoCADで描いた図はgifファイルに出力できません。 下記のようにコーディングしたのですが、”ぜひお越しください”しか表示されませんでした。 ほかの形式(dxf、wfm、bmp)でもいろいろ試したのですができませんでした。 どうすればAutoCADで作った図をフレーム上に表示できるのでしょうか? どなたか教えていただけませんか? import java.awt.*; import javax.swing.*; import javax.swing.ImageIcon; class map { public static void main(String args[]) { JFrame frame=new JFrame("map test"); JPanel panel=new JPanel(); ImageIcon ico=new ImageIcon("地図.gif"); JButton button=new JButton("ぜひお越しください",ico); panel.add(button); Container ct=frame.getContentPane(); ct.add(panel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }

  • javaについて質問

    import javax.swing.*; import java.awt.Color; import java.awt.Graphics; import java.awt.event.*; public class tt extends JFrame { public tt(){ setTitle("hogehoge"); setBounds( 10, 10, 300, 200); JButton btn1 = new JButton("続ける"); final JPanel p = new JPanel(); p.setBackground(Color.white); btn1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ } } ); p.add(btn1); getContentPane().add(p); } public static void main(String[] args){ tt test = new tt(); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); /* 実際に表示する */ } } Graphics g; g.drawString("ほげさんじょう",130,120);を追加しても コンパイルが通りません。 どうすれば画面に文字列を表示するんですか? あとテキストフィールドを追加するさいに、座標していとかして追加できないんですか?

  • javaの画像の表示のプログラムとmouselistenerのプログラ

    javaの画像の表示のプログラムとmouselistenerのプログラム(それぞれ↓にあります)をひとつに合わせたいのですがどうすればいいでしょうか? import java.awt.event.*; import javax.swing.*; class MyPanel extends JPanel implements MouseListener{ public MyPanel() { addMouseListener(this); } public void mouseClicked(MouseEvent e) { int x=e.getX(); int y=e.getY(); System.out.println("マウスがクリックされました (" + e.getX() + ", " + e.getY() + ")"); if((x<100&&x>40)&&(y<100&&y>40)){ System.out.println("範囲内"); }else{ System.out.println("aaa"); } } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } } public class MouseEventExample extends JFrame { public static void main(String[] args) { new MouseEventExample(); } MouseEventExample() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(new MyPanel()); setSize(300, 200); setVisible(true); } } ======↑のプログラムと↓のプログラムを合わせたいのです package novel; import java.awt.*; import java.awt.geom.*; import java.awt.event.*; import javax.swing.*; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import java.io.IOException; public class Java2dTest extends JFrame{ public static void main(String[] args){ Java2dTest test = new Java2dTest(); test.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);} }); test.setBounds( 0, 0, 200, 200); test.setVisible(true); } public void paint(Graphics g){ Graphics2D g2 = (Graphics2D)g; BufferedImage readImage = null; try { readImage = ImageIO.read(new File("sample.png")); } catch (Exception e) { e.printStackTrace(); readImage = null; } if (readImage != null){ g2.drawImage(readImage, 0, 0, this); } } }