- ベストアンサー
あるウィンドウだけを消したい
liar_adanの回答
その消したいウィンドウを仮にaFrameとすると、 アクションリスナーの中でSystem.exit(0);のかわりに aFrame.setVisible(false); aFrame.dispose(); を指定してください。 (場合によっては、アクションリスナに消したいウィンドウへの 参照を与えるのが面倒かもしれませんが、工夫してください。)
関連するQ&A
- javaのプログラムの通常起動について
今日は 下記のコードは、フォームがapplet形式となります、また起動しますと例外エラーを発生します。 Q1)通常のForm(applet形式でない)で、正常に起動するための変更をお教えて、 頂けますと大変有難いです。 注)フォームがapplet形式のものは、差当たり考えていません。 お手数ですが、宜しくお願いします。 //================================= import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class ObjectTest extends JFrame implements ActionListener { JButton b1; JButton b2; ObjectTest() { // ボタン作成・追加 b1 = new JButton("One"); b2 = new JButton("Two"); add(b1); add(b2); // リスナ登録 b1.addActionListener(this); b2.addActionListener(this); } public void actionPerformed(ActionEvent e) { // getSource() でイベントソースのオブジェクトを獲得し // Button クラスにキャストする JButton b = (JButton)e.getSource(); // getActionCommand() でボタンのラベルを獲得する System.out.println("Label : "+e.getActionCommand()); // getSource() で獲得したオブジェクトとはじめに作った // ボタンのオブジェクトが一致するか調べる if (b==b1) { System.out.println("Oneのボタン"); } if (b==b2) { System.out.println("Twoのボタン"); } // ボタンのラベルで比較する場合には // String クラスの文字列比較用のメソッド equals() を使って // if ( e.getActionCommand().equals("One") ) とします } }
- ベストアンサー
- Java
- キーボードのアクション
スタートボタンでtimerをスタートさせ、 キーボードの「↑」ボタンを押すとFrame上の○がジャンプをする。 というプログラムを作りたいのですができません。 エラーが出てしまいます。どうしてででしょうか? ActionListenerのところのソースは public void actionPerformed (ActionEvent e) { //記録開始ボタンが押された if(e.getSource() == StartB) { timer.start(); } //キーボード読み込み com = e.getActionCommand(); if(com.equals("jump")) { //ジャンプの状態へ State = 1; } //再描写 repaint(); } です。
- 締切済み
- Java
- JavaのSwingで別のフォームを閉じる方法
こんにちは。 JavaのSwingにおいて,以下のようなプログラムがあるとします。 その場合,A.javaでボタンを押すと,B.javaのフォームが閉じるようにしたいのですがどのようにしたらいいのでしょうか?よろしくお願いします。 ****A.java**** import ☆省略☆; public class A extends JFrame implements ActionListener{ //ボタン JButton end; public A(){ //フレームの設定 setVisible(true); setTitle("テスト"); //コンテナの設定 con = getContentPane(); //ボタン end = new JButton(" 終了 "); end.addActionListener(this); end.setActionCommand("end"); con.add(end); pack(); } public void actionPerformed(ActionEvent e){ String m = e.getActionCommand(); if(m == "end"){ ※ここに書くべき処理 } } } ****B.java**** import ☆省略☆; public class B extends JFrame{ //コンテナ Container con; public Answer(){ //フレームの設定 setVisible(true); setTitle("B"); //コンテナに関わる設定 con = getContentPane(); } }
- 締切済み
- Java
- [java]クローズボックスを閉じたときのActionEvent
クローズボックスを閉じたときのActionEventを 拾いたいのですが、IF文はどう記述すべきでしょうか? public void actionPerformed(ActionEvent e) { if(/**ここが分からない**/){ System.out.println("閉じるボタンを押した"); } }
- ベストアンサー
- Java
- Buttonを配列とすることができるでしょうか
swingをつかってJFrameに多数のJButtonをつくりました。どのボタンがクリックされたかを知りたいのです。 そのためにJButtonを配列として、宣言したところ、コンパイルは通るようですが、実行時にエラーとなります。 JButton[] button; と宣言してリスナーを次のように登録し、使いたいのです。 int i; for(i=0;i<80;i++){ button[i].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ loc=i; } } } このようにすれば、クリックされたときに、iの値をしらべれば、どのボタンがクリックされたかわかるとかんがえたのですが。実行時にエラーとなってしまいます。なにか良い方法はありませんか。
- 締切済み
- Java
- ActionListener について
JFrame の上に JPanel があり、JPanel の上に JButton があるとします。 JButton が押されたことを JFrame に知らせるにはどうしたらいいでしょうか。 わかるところまで書いてみました。 class MyFrame extends JFrame implements ActionListener { MyPanel myPanel = new MyPanel(); MyFrame() { myPanel.addActionListener(this); add(myPanel); } public void actionPerformed(ActionEvent e) { System.out.println("The button on the MyPanel was pressed!"); } public static void main(String[] args) { new MyFrame(); } } class MyPanel extends JPanel implements ActionListener { JButton button1 = new JButton(); MyPanel() { button1.addActionListener(this); add(button1); } public void actionPerformed(ActionEvent e) { } }
- ベストアンサー
- Java
- イベント処理
javaでプログラムを作り始めて間がないのですが、イベント処理に関して行き詰ってしまいました。望む動作は、メニュー→ゲーム→じゃんけんと選択すると、初期の状態として「じゃんけん・・・・」という文字とボタンが表示され、どれかボタンを押すと対応して「~ボタンが押されました」と表示させたいのですが、作ったプログラムだと、ボタンを押しても反応しません。後々メニューにもいくつかアイテムを追加したり、最終的にはコンピュータとじゃんけんをするプログラムを書きたいと思っています。ifを使った方法しか思いつかないのですが、どこがおかしいのでしょうか? import javax.swing.*; import java.awt.event.*; import java.awt.BorderLayout; public class question extends JFrame implements ActionListener{ JLabel label1; JPanel p2; public static void main(String[] args){ question test = new question("質問"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); } question(String title){ setTitle(title); setBounds( 10, 10, 300, 250); JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu("メニュー"); JMenu submenu = new JMenu("ゲーム"); JMenuItem subitem1 = new JMenuItem("じゃんけん"); subitem1.addActionListener(this); subitem1.setActionCommand("Start"); submenu.add(subitem1); menu.add(submenu); menuBar.add(menu); setJMenuBar(menuBar); JPanel p1 = new JPanel(); p2 = new JPanel(); label1 = new JLabel(""); JButton btn1 = new JButton("グー"); btn1.addActionListener(this); btn1.setActionCommand("goo"); JButton btn2 = new JButton("チョキ"); btn2.addActionListener(this); btn2.setActionCommand("cyoki"); JButton btn3 = new JButton("パー"); btn3.addActionListener(this); btn3.setActionCommand("paa"); p1.add(label1); p2.add(btn1); p2.add(btn2); p2.add(btn3); getContentPane().add(p1, BorderLayout.PAGE_START); getContentPane().add(p2, BorderLayout.PAGE_END); p2.setVisible(false); } public void actionPerformed(ActionEvent e){ String cmd = e.getActionCommand(); if (cmd.equals("Start")){ p2.setVisible(true); label1.setText("じゃんけん・・・・"); if (cmd.equals("goo")){ label1.setText("グーが押されました"); }else if (cmd.equals("cyoki")){ label1.setText("チョキが押されました"); }else if (cmd.equals("paa")){ label1.setText("パーが押されました"); } } } }
- ベストアンサー
- Java
- フレームを消したい
こんにちは。 いつもお世話になっております。 また、どうしてもわからないことが出てきてしまいました。 質問よろしいでしょうか? 以下のプログラムを実行して 「次へ」と書かれたボタンをクリックし 次に現れるフレーム上の「このフレームだけ消す」 と書かれたボタンをクリックしたときに 「f2」(2つ目のフレーム)だけ閉じるようにしたいのです。 以下の場合は両方とも閉じてしまうのです。 何かよい方法ご存知ありませんか? よろしくお願いいたします。 ================================================== import java.awt.*; import javax.swing.*; import java.awt.event.*; class unload { public static void main(String[] args) { JFrame f=new JFrame("kiki"); Origin p=new Origin(); Container ct=f.getContentPane(); ct.add(p); f.pack(); f.setVisible(true); } } class Origin extends JPanel implements ActionListener { JButton b; Origin() { b=new JButton("次へ"); this.add(b); b.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource()==b) { JFrame f2=new JFrame(); Origin2 p2=new Origin2(); Container ct=f2.getContentPane(); ct.add(p2); f2.pack(); f2.setVisible(true); } } } class Origin2 extends JPanel implements ActionListener { JButton b2; Origin2() { b2=new JButton("このフレームだけ消す"); this.add(b2); b2.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource()==b2) { System.exit(0); } } }
- ベストアンサー
- Java
- 値をセットしたい
Swingで「開くボタン」と「印刷ボタン」を作りました。 カンマ区切りのtxtファイルを開き、必要な項目だけリスト(DefaultListModel使ってます)表示。 印刷ボタンを押して印刷というのを作りたいのですが、リストに表示されたデータ等をPrObjectに渡せなくて困っています。 ※1のところでリストに表示されているデータをString[]のhakoに入れ、※2でセットして、と思っているのですが※1で互換性のない型とエラーが出ます。 初心者なもので行き詰ってしまいました。 アドバイス、ヒント、ツッコミなんでもいいのでよろしくお願いします。 public class SwingTest extends JFrame implements ActionListener { 略 public SwingTest(){ JButton Open = new JButton("開く"); //ボタン JButton Print1 = new JButton("印刷"); //ボタン 略 } public void actionPerformed(ActionEvent e){ String s = e.getActionCommand(); if(s.equals("Open")==true){ //開く 略 while ((line=br.readLine()) != null) { String[] token = line.split(","); String str = token[16] + " "+ token[19]; model.addElement(str); } 略 if(s.equals("Print1")==true){ //印刷 String[] hako; //※1 for (int i = 0; i < model.getSize(); i++){ hako[i] = (model.getElementAt(i)); } PrObject pobj = new PrObject(); pobj.setPrintStrings(hako); //※2 略 pjob.setPrintable(pobj,fmt); 略 }}} class PrObject implements Printable{ private String[] printStrings = null; public void setPrintStrings(String[] strs){printStrings = strs;} public int print(Graphics g,PageFormat fmt,int pageIndex){ if(pageIndex>0){ drawString略 }}} }
- ベストアンサー
- Java
- jFrameを使って複数の画面を生成するにはどうすれば良いのでしょうか?
eclipseのVE機能を使ってjFrameの画面生成を勉強しているのですが、 複数の画面を生成することができません。。 以下のソースで、ボタンが押された時に新しく画面を生成するように しているのですが、なぜか生成できません。エラーもありません。 何が足りなかったのか、悪かったのかを指摘していただけますでしょうか? import javax.swing.JPanel; import javax.swing.JFrame; import java.awt.GridBagLayout; import javax.swing.JButton; import java.awt.GridBagConstraints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class jFrameTest extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JButton jButton = null; /** * This is the default constructor */ public jFrameTest() { super(); initialize(); } /** * This method initializes this * * @return void */ private void initialize() { this.setSize(300, 200); this.setContentPane(getJContentPane()); this.setTitle("JFrame"); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; jContentPane = new JPanel(); jContentPane.setLayout(new GridBagLayout()); jContentPane.add(getJButton(), gridBagConstraints); } return jContentPane; } /** * This method initializes jButton * * @return javax.swing.JButton */ private JButton getJButton() { if (jButton == null) { jButton = new JButton(); jButton.setText("jButton"); jButton.addActionListener(this); } return jButton; } //ボタン入力リスナー public void actionPerformed(ActionEvent event) { String cmd = event.getActionCommand(); if(cmd == "jButton"){ jFrameTest jtest = new jFrameTest(); System.out.println("new"); } } }
- ベストアンサー
- Java