質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

0回答

1143閲覧

JavaでJavaScriptを実行し結果を画面に表示させたい

roxy721

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/07/25 03:41

編集2019/07/25 04:29

JavaでJavascriptを呼び出しその結果を文字列として画面に表示させたい

Javaプログラムにて、JavaScriptを実行しその結果を画面のテキストボックスに表示させたいです。
現在調査中のため、ボタンを押したときに「1+2=3」という結果文字列を表示させるプログラムを作成したいところです。
実行結果はeclipseのコンソールには表示されますが、画面のテキストボックスには表示されない状況で困っています。ご教示いただければ幸いです。
エラーは発生していません。

画面イメージ

イメージ説明

該当のソースコード

mainクラス

Java

1package test_swing; 2 3import java.awt.EventQueue; 4import java.awt.event.ActionEvent; 5import java.awt.event.ActionListener; 6 7import javax.swing.JButton; 8import javax.swing.JFrame; 9import javax.swing.JLabel; 10import javax.swing.JLayeredPane; 11import javax.swing.JTextField; 12import javax.swing.border.EmptyBorder; 13 14public class test_swing extends JFrame { 15 16 private JLayeredPane contentPane; 17 18 /** 19 * Launch the application. 20 */ 21 public static void main(String[] args) { 22 EventQueue.invokeLater(new Runnable() { 23 @Override 24 public void run() { 25 try { 26 test_swing frame = new test_swing(); 27 frame.setVisible(true); 28 } catch (Exception e) { 29 e.printStackTrace(); 30 } 31 } 32 }); 33 } 34 35 /** 36 * Create the frame. 37 */ 38 public test_swing() { 39 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 40 setBounds(100, 100, 590, 415); 41 contentPane = new JLayeredPane(); 42 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 43 setContentPane(contentPane); 44 contentPane.setLayout(null); 45 46 JLabel lblNewLabel = new JLabel("New label"); 47 lblNewLabel.setBounds(5, 5, 426, 31); 48 contentPane.add(lblNewLabel); 49 50 JTextField txtNewText = new JTextField(); 51 txtNewText.setBounds(5, 50, 200, 31); 52 contentPane.add(txtNewText); 53 54 JButton btnNewButton = new JButton("クリック"); 55 btnNewButton.setBounds(96, 100, 98, 43); 56 btnNewButton.addActionListener(new ActionListener() { 57 @Override 58 public void actionPerformed(ActionEvent e) { 59 ExecJs js = new ExecJs(); 60 String strDisp = "test"; 61 strDisp = js.execute("var a = 1 + 2; print('1 + 2 = '+a);"); 62 txtNewText.setText((String)strDisp); 63 } 64 }); 65 contentPane.add(btnNewButton); 66 } 67 68} 69

JavaScriptを実行するClass

Java

1package test_swing; 2 3import javax.script.ScriptEngine; 4import javax.script.ScriptEngineManager; 5import javax.script.ScriptException; 6 7public class ExecJs { 8 public String execute(String script) { 9 ScriptEngineManager sem = new ScriptEngineManager(); 10 ScriptEngine se = sem.getEngineByName("JavaScript"); 11 12 String strRet = ""; 13 try { 14 strRet = (String)se.eval(script); 15 } catch (ScriptException e) { 16 e.printStackTrace(); 17 } 18 return strRet; 19 } 20} 21

補足情報(FW/ツールのバージョンなど)

Eclipse IDE for Enterprise Java Developers
Version: 2019-03 (4.11.0)
Build id: 20190314-1200

参考サイト

https://www.javalife.jp/2018/04/01/post-508/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/07/25 03:55

JavaScriptのprint()はあくまで「印刷ダイアログ呼び出し」だったような。 何を参考に組まれたのでしょうか?
m.ts10806

2019/07/25 04:12

こちらは回答ではなく質問の追記修正依頼のコメント欄ですので 基本的には質問本文編集してください。
m.ts10806

2019/07/25 04:16

理由は分かったんですが、Swingでこういう使い方をできるの知らなかったのでこちらに続けて書きますと >結果を標準出力してみます。 だからですね。 標準出力はあくまで「コンソールに出力すること」になりますので。 Swingなどで作った画面に出力しようと思ったらprint()ではないように思います。
roxy721

2019/07/25 04:28

すみません。修正依頼コメントと回答を履き違えていました。 参考にしたサイトURLを追加しておきます。
roxy721

2019/07/25 04:32

理由についてもありがとうございます。別の方法で試してみます。 経過は何らかの形で本投稿に記載します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問