javaで一定時間おきに操作を自動実行するソフトを開発したのですが
無限ループする仕様のため、停止ボタンがほしいと思いました。
プログラムを停止するためのプログラムを作りかた、
フレームの付け方やボタンの配置方法など調べたのですがよくわかりません
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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総合スコア9388
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/03 10:54
2015/09/03 11:06
2015/09/03 11:31
2015/09/03 11:38
2015/09/03 11:43