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

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

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

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

Eclipse

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

Q&A

解決済

1回答

2519閲覧

【java】自作のプログラムにフレームを付けてプログラムの停止ボタンを配置したい

kobamp3

総合スコア69

Java

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

Eclipse

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

0グッド

0クリップ

投稿2015/09/02 14:15

javaで一定時間おきに操作を自動実行するソフトを開発したのですが
無限ループする仕様のため、停止ボタンがほしいと思いました。
プログラムを停止するためのプログラムを作りかた、
フレームの付け方やボタンの配置方法など調べたのですがよくわかりません
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Java8からはGUIにJavaFXという機能を使うことが推奨されています。

JavaFXの入門は、公式ドキュメントにサンプルがありますので、そちらをご覧ください。
3 Hello World、JavaFXスタイル(リリース8)

JavaFXはまだ歴史が浅く、サンプルも少ないので、難しいと感じたらSwingのほうが良いかもしれません。
Swingは今後はメンテナンスが期待できませんが、簡単な機能でしたらSwingの方が楽に実現できるかも知れません。

ただし、JavaFXは標準のビジュアルエディターが提供されていますが、Swingには標準のエディターがありません。Eclipseのプラグインもありますが、その場合はNetBeansを使った方が簡単かも知れません。

Swingの例を載せておきます。

lang

1import java.awt.event.*; 2import javax.swing.*; 3 4public final class App extends JFrame { 5 6 public App() { 7 setTitle("App"); 8 setDefaultCloseOperation(EXIT_ON_CLOSE); 9 JButton button = new JButton("stop"); 10 button.addActionListener(new ActionListener() { 11 @Override 12 public void actionPerformed(ActionEvent e) { 13 // TODO 停止処理を呼び出す 14 } 15 }); 16 JPanel p = new JPanel(); 17 p.add(button); 18 add(p); 19 } 20 21 public static void main(String[] args) { 22 javax.swing.SwingUtilities.invokeLater(new Runnable() { 23 public void run() { 24 App app = new App(); 25 app.setSize(300, 100); 26 app.setLocationRelativeTo(null); 27 app.setVisible(true); 28 } 29 }); 30 } 31 32}

(追記)

どのようなプログラムをつなぐかによって書き方は変わってきますが、一例を示します。

lang

1public final class App extends JFrame { 2 3 Hello hello; 4 5 public App() { 6 setTitle("App"); 7 setDefaultCloseOperation(EXIT_ON_CLOSE); 8 JButton button = new JButton("stop"); 9 button.addActionListener(new ActionListener() { 10 @Override 11 public void actionPerformed(ActionEvent e) { 12 hello.sayHello(); 13 } 14 }); 15 JPanel p = new JPanel(); 16 p.add(button); 17 add(p); 18 this.hello = new Hello("your name"); 19 } 20 21 public static void main(String[] args) { 22 javax.swing.SwingUtilities.invokeLater(new Runnable() { 23 public void run() { 24 App app = new App(); 25 app.setSize(300, 100); 26 app.setLocationRelativeTo(null); 27 app.setVisible(true); 28 } 29 }); 30 } 31 32} 33 34final class Hello { 35 36 private final String name; 37 38 Hello(String name) { 39 this.name = name; 40 } 41 42 void sayHello() { 43 System.out.println("Hello, " + name); 44 } 45 46}

投稿2015/09/02 14:55

編集2015/09/03 11:06
argius

総合スコア9390

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

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

kobamp3

2015/09/03 10:54

回答ありがとうございます。 ここにどのようにしてプログラムをつなげばいいのか分かりません.... Helloを表示するプログラムをつないだ時の例をお願いします。
argius

2015/09/03 11:06

回答欄に追記しました。
kobamp3

2015/09/03 11:31

このプログラムを追加しようと思っています よろしくお願いします。 import java.awt.Robot; import java.awt.event.KeyEvent; public class AutoSave { public static void main(String[]args) throws Exception { Robot robot = new Robot(); for (int i = 0; i < 150; i++) { robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_S); robot.keyRelease(KeyEvent.VK_S); robot.keyRelease(KeyEvent.VK_CONTROL); robot.delay(60000); } } }
argius

2015/09/03 11:38

まず、AutoSaveクラスをクラスっぽくしてみましょう。 AutoSaveクラスに、コンストラクタ,start,stopメソッドを追加して、mainの処理はstartに持たせます。stopの機能は、AutoSaveクラスにbooleanフィールドを追加して制御します。あとはHelloクラスをAutoSaveクラスに入れ替えればできそうです。
kobamp3

2015/09/03 11:43

出来ました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問