• ベストアンサー

JEditorPaneでwebページを表示

JEditorPaneを使ってwebページを表示させて いるのですが、コンボボックスの選択したアドレスのwebページの表示はできるのですが、検索エンジンを 使って検索してもまったく反応がありません。 何か他のコードを書きたさなければならないのでしょうか? ------------------------------------ JEditorPane html = new JEditorPane(); String[] choise ={"http://news.goo.ne.jp/", "http://www.google.co.jp/","http://www.excite.co.jp/", "http://headlines.yahoo.co.jp/hl",}; JComboBox cb = new JComboBox(choise); html.addHyperlinkListener(this); html.setContentType("text/html"); html.setEditable(false); cb.setEditable(true); public void actionPerformed(ActionEvent e) { try { html.setPage((String)cb.getSelectedItem()); } catch(Exception err) { JOptionPane.showMessageDialog( this,"読み込みエラーが発生しました", "エラー", JOptionPane.ERROR_MESSAGE); } } public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED) return; String url = e.getURL().toString(); try { html.setPage(url); } catch(Exception err) { } ---------------------------------------

  • Java
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • TAKATON
  • ベストアンサー率62% (17/27)
回答No.2

検索エンジンのWebページがJavaScriptを使用しているからでしょう。 JEditorPaneに表示したWebページでJavaScriptを動かすことは できません。

nilyannko
質問者

お礼

>JavaScriptを動かすことはできません。 なっば¥なるほど、今JavaScriptのサンプルとか 載せているサイトで確認しました。 確かにJavaScriptのページは無理みたいですね。 変わりにJavaScriptを使ってない検索エンジンを 見つけましたのでそれを使うことにします! ありがとうございました☆

その他の回答 (1)

回答No.1

swingにはうといのでアドバイスです。 ・hyperlinkUpdateメソッドが呼ばれているかどうか ・e.getEventType()の戻りがHyperlinkEvent.EventType.ACTIVATED以外なっていてreturnされていないか ・String url = e.getURL().toString();の値はどうなっているか などを確認してみるといいかもしれません。 以下は余談ですが、 前にまったく同じタイトルの質問をしていますよね? でも内容は全然違いますよね? 「タイトル」は「質問を要約したもの」であることが望ましいです。 他の人が質問者さんと同じ(もしくは似た)状況になって調べようとしてもタイトルだけじゃ区別つきませんよね?

nilyannko
質問者

お礼

>前にまったく同じタイトルの質問をしていますよね 投稿した後に自分の過去にした質問タイトルと似ていたのを見てあぁ~~と思ったんですが(泣 以後気おつけます!! ご指摘ありがとうございました!

関連するQ&A

  • JEditorPaneでwebページを表示

    現在、テキストフィールドにアドレスを入力して そのウェブページをJEditorPaneに表示するようにしているんですが、これをテキストフィールドからコンボボックスに変更したいのですがgetText()とsetTex()のところをコンボボックスに変更した場合にどのように記述すればよいでしょうか?? JEditorPane html = new JEditorPane(); String[] choise ={"http://","http://www.excite.co.jp/","http://news.goo.ne.jp/", "http://www.google.co.jp/","http://www.excite.co.jp/", }; JComboBox cb = new JComboBox(choise); JTextField tf1=newJTextField"http://www.google.co.jp/"); tf1.addActionListener(this); public void actionPerformed(ActionEvent e) { try { html.setPage(tf1.getText()); } catch(Exception err) {} } public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED) return; String url = e.getURL().toString(); tf1.setText(url); try { html.setPage(url); } catch(Exception err) { }

    • ベストアンサー
    • Java
  • Undo/Redo機能の実装

    swingで作っているブラウザーに進むと 戻るの機能を実装したいのですが、 なかなかブラウザーにこの機能をつけたサンプルが みつからなくて、どなたか教えていただけないでしょうか? RedoAction redoAction = new RedoAction(); UndoAction undoAction = new UndoAction(); mn2.add(redoAction); mn2.add(undoAction); class RedoAction extends AbstractAction{ RedoAction(){ putValue(NAME, "進む"); } public void actionPerformed(ActionEvent e){ } } class UndoAction extends AbstractAction{ UndoAction(){ putValue(NAME, "戻る"); } public void addDocument(String text, String type, String title) { //JEditorPane html = new JEditorPane(type , text); html.setEditable(false); html.addHyperlinkListener(this); JScrollPane pane = new JScrollPane(html); tabPane.addTab(title, null , pane); } public void addDocument(URL url) { html.setContentType("text/html "); html.setEditable(false); html.addHyperlinkListener(this); try { html.setPage(url); } catch(Exception err) { } JScrollPane pane = new JScrollPane(html); tabPane.addTab(url.toString() , null , pane); }

  • 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にきっちり表示されるまで、 次の処理へと進まずに待たせたい。*/ /*どのように書けばいいのでしょう??*/ } }

    • ベストアンサー
    • Java
  • 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); } }

  • if文の書き方

    プログラム初心者です if文の処理速度が速いのは一般的に考えてどちらでしょうか? 別々にif文で処理する方法 try { if(!isset($_REQUEST['id'])&& !is_string($_REQUEST['id'])){ throw new Exception('error'); } if(!isset($_COOKIE['date'])&& !is_string($_COOKIE['date'])){ throw new Exception('error'); } } catch (Exception $e) { $msg = $e->getMessage(); } 一緒に処理する方法 try { if(!isset($_REQUEST['id']) && !is_string($_REQUEST['id']) && !isset($_COOKIE['date']) && !is_string($_COOKIE['date'])){ throw new Exception('error'); } } catch (Exception $e) { $msg = $e->getMessage(); } よろしくお願いします

    • ベストアンサー
    • PHP
  • 簡易webブラウザについて

    前回回答してくれた方々ありがとうございます! 実は今回も相談があり、質問させていただきました。 実は、新基準Javaプログラミングという本の手順にのっとり、今度は簡易webブラウザを作動させてみようとしているのですが、動作させると訳のわからない英文(おそらくエラー)がずらりと出てきてうまく作動しません。テキストファイルのタイトルはMiniBrowser.java 内容は以下の通りです。また、空白を示す為にスペースの数だけ~を挟みます。 import~javax.swing.*; import~java.io.*; class~MiniBrowser~{ ~~public~static~void~main(~String[]~args~)~throws~IOException~{ ~~~~JEditorPane~jep~=~new~JEditorPane(args[0]); ~~~~jep.setEditable(false); ~~~~JFrame~jf~=~new~JFrame(); ~~~~jf.add(jep); ~~~~jf.setSize(800,~600); ~~~~jf.setVisible(true); ~~} } 行頭はtabです。二回目の空白はtabとただの段落と二通り試しましたがどちらもエラーが出ました。javaコマンド起動は確認済みなので、おそらくコンパイル前のファイル内容に問題があるのではないかと思うのですが、何度も見直しましたが正確に入力できていると思います(おそらく)正直もう自分ではお手上げ状態です。ぜひ回答お願いします。どうしたらいいでしょうか?

  • web.xmlでのエラーページ

    お世話になります。 Tomcat5.5、Linux環境下で、 WEB-INF/web.xmlに <error-page> <error-code>500</error-code> <location>/jsp/error.jsp</location> </error-page> <error-page> <error-type>java.lang.Exception</error-type> <location>/jsp/error.jsp</location> </error-page> という記述をしています。 (Tomcatは問題なく起動しています) サーブレット内でエラーが起こるように設定したのですが、作成したerror.jspに飛ばず、通常の500のエラーページが表示されます。 サーブレット記述 doGet(... ) throws ServletException,IOException { ...処理  try { throw new IOException(); //ここでExceptionをわざと起こしています。 ...処理  } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } なぜ、独自のエラーページに飛んでくれないのか原因が分からず投稿させていただきました。 どなたかアドバイスお願いします。

  • ロックの取得とwaitメソッド

    インスタンスに対してwait()メソッドを実行するには、そのインスタンスのロックを取得していなくてはならないと思っています。 method2()がエラーになるのと、method3が正常に動作するのは、 インスタンスに対するロックの有無で理解できます。 ただ、下記のソースでmethod()がエラーとならない動作が理解でき ませんでした。 このメソッドだと、メソッド単位ではロックがかかっていますが、 synchronizedでないメソッドが存在すれば別スレッドからアクセスでき るので、インスタンスに対するロックを取得しているわけではないと思 います。 私の理解が間違っているのでしょうか。 class MyClass { String str = new String("a"); public synchronized void method(){ try{ wait(); } catch (Exception e) { e.printStackTrace(); } } public void method2(){ synchronized (str) { try{ wait(); }catch(Exception e){ e.printStackTrace(); } } } public void method3(){ synchronized (this) { try{ wait(); }catch(Exception e){ e.printStackTrace(); } } } } class UseMyThread1 { public static void main(String args[]) { MyClass mc1 = new MyClass(); MyClass mc2 = new MyClass(); MyClass mc3 = new MyClass(); //mc1.method();//ここはエラーにならない System.out.println("*********"); //mc2.method2(); //ここはエラーになる System.out.println("*********"); //mc3.method3();//ここはエラーにならない } }

    • ベストアンサー
    • Java
  • JComboBoxの配列の作り方について

    class PdMenu extends JPanel implements ActionListener { private static final long serialVersionUID = 5962740427029989204L; /*-------------------------* * Variables. * *-------------------------*/ /*----- Pull-down menu -----*/ JComboBox[] pd=new JComboBox[10]; String[] arrDate={"00", "01", "02", "03"}; List<String> date=new ArrayList<String>(); static String[] result; /*-------------------------* * Cons. * *-------------------------*/ /*----- Creation -----*/ PdMenu() { date=Arrays.asList(arrDate); result=date.subList(0, 3).toArray(new String[]{}); for(int i=0; i<pd.length; i++){ pd[i]=new JComboBox<String>(); } pd[0]=new JComboBox<String>(result); } public void actionPerformed(ActionEvent e) { /*------*/ } } Eclipseを使用しています。 JComboBox[] pd=new JComboBox[10];の部分において、ジェネリックタイプを付けるようにと の警告が表示されている状態です。 JComboBoxの配列を作りたいのですが、ジェネリックタイプを付けると配列が作れません。 JComboBoxの配列を作る場合は、ジェネリックタイプを付ける事ができません。 警告の表示されない良い方法はありませんでしょうか? みなさま、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • javaの課題プログラムでどうしてもわかりません。

    以下(senderTest)のプログラムを適切に繰り返すように書き換えたいのですが、どうしてもうまくいきません。while文で自分なりに繰り返した結果は同じ文字を送り続けるというものになってしまいました。 本来は送信して、待機状態になりまた新たに文字を入力したら送信、また待機というようにしたいのですがどうしたらよいでしょうか? どうかよろしくおねがいします。 ******************************** senderTest import java.io.*; import java.net.*; public class senderTest { private InetAddress address; private int port = 13400; private DatagramSocket socket; public senderTest() throws Exception { this.address = InetAddress.getByName("192.168.0.16"); this.socket = new DatagramSocket(); } public void send(String s) throws Exception { byte buffer[]; buffer = s.getBytes("Shift_JIS"); DatagramPacket packet = new DatagramPacket(buffer, buffer.length, this.address, this.port); this.socket.send(packet); } public static void main(String[] args)throws IOException { senderTest sender1; System.out.println("↓送信する文字を入力してください↓"); String name = ("健児>"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String msg = name +br.readLine(); try { sender1 = new senderTest(); sender1.send(msg); System.out.println("『" + msg + "』を送信しました。"); } catch (Exception ex) { System.err.println("Error: " + ex.getMessage()); } } } ********************************

    • ベストアンサー
    • Java