ボタンのイベントで異なるウィンドウを表示させたい

このQ&Aのポイント
  • 現在swingを使って勉強しているjavaの開発者が、あるウィンドウのボタンをクリックすると別のウィンドウが表示される処理の実装について質問しています。
  • 該当の実装はプログラム内でイベントを処理するためのメソッドを使用しており、問題の原因を特定するために質問者はプログラムの詳細も提供しています。
  • 質問者は原因の検討を行うための情報を提供しているので、適切なアドバイスをもらうことができるようです。
回答を見る
  • ベストアンサー

ボタンのイベントで異なるウィンドウを表示させたい。(swing)

javaを勉強中の者です。 現在swingを使って勉強しているのですが、あるウィンドウのボタンをクリックすると違うウィンドウが新たに出現する、という処理を実装したいのですが、うまくいきません。これでいくはずだと思うんだけどなぁ・・というところで止まっています。 一応、そのあたりの処理は下記のような感じでプログラムを組んでいます。 public class MainWindow extends JFrame{ public void main(String[] args){ //このウィンドウを表示させる処理 } public MainWindow(String title){    //メニューバー、ツールバーとか・・ //イベントを実装したいボタン          JButton item1; item1 = new JButton("kaku", new ImageIcon("open.gif")); item1.addMouseListener(new MouseAdapter(){ public void mouseClicker(MouseEvent arg0){ showSendMailWindow(); } }); toolbar.add(item1); } private void showSendMailWindow(){ SendMailWindow form = new SendMailWindow("新規記事"); form.show(); } } SendMailWindowというのが表示させたいウィンドウのクラスで、普通のウィンドウを表示させるのと同じ感じで書いています。 これらの情報で、原因の検討がつきますでしょうか? よろしくお願いします。

  • rapun
  • お礼率65% (196/300)
  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
noname#49664
noname#49664
回答No.1

new MouseAdapterしている無名クラス内のメソッド。 mouseClickerではなく、mouseClickedですね?

rapun
質問者

お礼

解決しました。 ありがとうございます。

関連するQ&A

  • Jave Swing 画像表示わからない

    java swingでGUIをプログラミングしている者です。 JLabelにImageIconの画像を貼り付けるプログラムです。↓ //画像を表示するプログラム //インポート import javax.swing.*; import java.awt.*; import java.awt.event.*; class gazopro extends JFrame{ JLabel l1; JButton b1; JPanel p; public static void main(String args[]) { //ウィンドウを作成また設定 gazopro frame = new gazopro(); frame.setBounds(300,200,700,400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } gazopro(){ //コンポーネントを作成 p = new JPanel(); add(p); b1 = new JButton("画像を表示"); p.add(b1); ImageIcon icon = new ImageIcon("image.jpg"); l1 = new JLabel(icon); p.add(l1); } }   わからないところは、ImageIcon icon = new ImageIcon("image.jpg");のところです。 ImageIconの引数は、プログラミングを行っているパソコン(OS は Windows)のマイコンピューター→ Cドライブ→ MyJava→ image.jpgを指定しましたがこれで合ってますか? このプログラムでは、画像が表示されませんでした。 どうすればいいでしょうか? 解説と、ご指導宜しくお願いします。

    • ベストアンサー
    • Java
  • Eclipse3.6でSwingアプリケーションを作成しています。

    Eclipse3.6でSwingアプリケーションを作成しています。 ImageIconで画像のアドレスを登録し、画像をボタンとして使用したいのですが、画像のアドレスがフルアドレスでないとEclipse上で実行したときに画像が表示されません。 起動しているJAVAファイルと画像ファイルは同じ場所に保存してあります。 何か他の設定があるのでしょうか? 通常のJAVAコンパイル時のソース ImageIcon icon1 = new ImageIcon("./test.png"); JButton button1 = new JButton(icon1); ※このソースではEclipse上では画像が表示されない Eclipse上で起動させて時のソース ImageIcon icon1 = new ImageIcon("c:/eclipse/workspace/src/test.png"); JButton button1 = new JButton(icon1); 以上です。 宜しくお願いします。

    • ベストアンサー
    • Java
  • イメージボタンを作成したいのですが。。

    イメージアイコンを利用してイメージつきのボタンを作成したいのですが、 ボタン上にイメージが描画されません。 ソースは以下のとおりです。 import javax.swing.*; import java.awt.event.*; class Dtsess_trmer extends JFrame implements ActionListener { JButton img_btn; ImageIcon imgic; public static void main( String args[] ) { String com = args[0]; String img = args[1]; String tit = args[2]; String mes = args[3]; Dtsess_trmer dt = new Dtsess_trmer(com,img,tit,mes); } Dtsess_trmer(String com,String img,String tit,String mes) { super(tit); makeicon(img); setting(); img_btn = new JButton(imgic); getContentPane().add(img_btn); } public void setting() { setSize(200,200); setVisible(true); } public void makeicon(String IMG) { imgic = new ImageIcon(IMG); } public void actionPerformed(ActionEvent AE) { } } コンパイルはとおります。どこが間違っているのでしょうか?

  • java(swing)で、登録ボタンを押すとファイルを読み込みDBに登

    java(swing)で、登録ボタンを押すとファイルを読み込みDBに登録する処理です。 その処理で、登録ボタンを押すと、ダイアログを起動して、処理中とメッセージ表示したいのですが、データが多く、画面が固まった状態になり、メッセージが表示されないのです。何かいい方法ありますでしょうか? ******************************************************************* import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class topMain { public static void main(String[] args) { //メニュー画面を起動する topMain frame = new topMain(); frame.topFrame(); } private void topFrame() { JFrame jf = new JFrame(); //フレームのサイズ設定 jf.setSize(1000, 600); jf.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); jf.getContentPane().setLayout(null); JButton b1 = new JButton("登録ボタン"); b1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //ダイアログボックスを開く     //ダイアログボックスは起動するが、 //メッセージが表示されない、 //おそらく大きいデータを読むとき画面が固まるため //重いファイルを読み込む //DB登録処理 //ダイアログを閉じる } }); jf.getContentPane().add(b1); b1.setBounds(40, 400, 240, 100); jf.setVisible(true); } } *******************************************************************

  • [java初心者です]ボタンのイベントの追加

    javaで、複数ボタンを表示し、クリックするとそれぞれのダイアログが表示されるプログラムを作っています。 サンプルを利用して、ボタンを追加するところまで出来たのですが そこからがうまくできません。 アクションリスナーがthisにしてあるため、どのボタンでも 同じダイアログが表示されてしまうのだと思いますが、 this以外にすることはできるのでしょうか? import javax.swing.*; import java.awt.BorderLayout; import java.awt.event.*; public class JOptionPaneTest8 extends JFrame implements ActionListener{ JLabel ansLabel; public static void main(String[] args){ JOptionPaneTest8 frame = new JOptionPaneTest8(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("タイトル"); frame.setVisible(true); } JOptionPaneTest8(){ JButton ichiButton = new JButton("○○○な時"); ichiButton.addActionListener(this); JButton niButton = new JButton("○○●な時"); niButton.addActionListener(this); JPanel p = new JPanel(); p.add(ichiButton); p.add(niButton); ansLabel = new JLabel("今の気分をクリック!"); JPanel ansPanel = new JPanel(); ansPanel.add(ansLabel); getContentPane().add(p, BorderLayout.CENTER); getContentPane().add(ansPanel, BorderLayout.PAGE_END); } public void actionPerformed(ActionEvent e){ ImageIcon icon = new ImageIcon("aka.gif"); int option = JOptionPane.showConfirmDialog(this, "赤を身の回りに置いて元気に!", "OK?", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, icon); if (option == JOptionPane.YES_OPTION){ ansLabel.setText("ほかには?"); }else if (option == JOptionPane.NO_OPTION){ ansLabel.setText("今の気分をクリック!"); } } 気分をボタンとして表示して そのボタンをクリックすると効果的な色のアイコン(gif)と解決策?を ダイアログとして表示させたいです。 高校でついこの間javaを始めた初心者です(>_<) 提出期限が近づいていて焦っています; お手数ですが回答お願いいたします・・・!!

  • ボタンが表示されません

    //テキストパッドをつくっています。 //このプログラムはボタンが表示されませんなぜ? import java.awt.*; import javax.swing.*; class Test_Text extends JFrame{ public static void main(String args[]){ Sample_text st = new Sample_text(); JFrame jf = new JFrame("Test_Text"); JTextArea jt = new JTextArea(50,30); Container c = jf.getContentPane(); c.add(jt,BorderLayout.PAGE_START); jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(EXIT_ON_CLOSE); } public void Sample_text(){ JButton j1,j2; j1 = new JButton("編集"); j2 = new JButton("保存"); setLayout(new FlowLayout()); this.add(j1); this.add(j2); } }

  • ボタンクリック後パネルを再描画repaintしたい

    ボタンをクリック後にstaticで保持していた値にプラス1して その値をパネルに再描画したいと思っています。 下記のプログラムだとボタンをクリックすると (<1<2<3<4)となって画像と数字が増えてしまいます 行いたいのは数字の部分だけが再描画されて カウントされて<3と表示されるだけになってもらいたい クラス1つ目 import java.awt.BorderLayout; import java.awt.Cursor; import java.awt.event.MouseEvent; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Sample extends JFrame{ static int value=1; JPanel work = new JPanel(); public static void main(String[] args) { Sample frame = new Sample(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(100, 200, 200, 100); frame.add(frame.createPanel(), BorderLayout.LINE_END); frame.setVisible(true); } public JPanel createPanel() { ImageIcon icon = new ImageIcon("./img/left.gif"); JLabel label = new JLabel(); Cursor c = new Cursor(Cursor.HAND_CURSOR); label.setCursor(c); label.setIcon(icon); JLabel strLabel = new JLabel(); String str = Integer.toString(value); strLabel.setText(str); work.add(label); work.add(strLabel); label.addMouseListener(new myListener()); return work; } class myListener extends MouseAdapter{ public void mouseClicked(MouseEvent e){ System.out.print(Sample.value++); createPanel().repaint(); setVisible(true); } } } クラス2つ目 import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class MouseAdapter implements MouseListener{ public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){} }

    • ベストアンサー
    • Java
  • 「ScrollPane」のイベントの取得方法は?(AWT)

    タイトルのままなのですが、「ScrollPane」のイベント取得方法が知りたいのです。 例えばマウスのイベントを取得する時は下記のようにしますよね。 ************************************************* panel1.addMouseListener(new panel1_MouseAdapter(this)); ************************************************* class panel1_MouseAdapter extends java.awt.event.MouseAdapter { Panel_main adaptee; panel1_MouseAdapter(Panel_main adaptee) { this.adaptee = adaptee; } public void mouseClicked(MouseEvent e) { adaptee.panel1_mouseClicked(e); } } ************************************************* void panel1_mouseClicked(MouseEvent e){ //ここに処理を書く } ************************************************* 「ScrollPane」のスクロールされたとか、↓↑がクリックされたなどスクロール特有のイベントを取得したいのです。

    • ベストアンサー
    • Java
  • ImageIconをJButtonに事後的に表示するには

    こんにちは。 JButtonにImageIconを表示するのに、コンストラクタ で表示するのは分かるのですが、事後的に表示する 方法は無いでしょうか。 具体的には、ボタンを押したのをきっかけに、 ボタンの画像を変えるとか。 実は・・ 現在凡庸的なレイアウトのJButton,JTextAreaなどを 配置したフレームを継承して使っているのですが、 JButtonは、既に配置されているので、コンストラクタ では、ImageIconを設置できないのです。 なにか分かる人、お願いします。

    • ベストアンサー
    • Java
  • cadで作った図面をフレーム上で表示

    こんばんは いつもお世話になっています。 gif形式の図を表示することはできるのですが AutoCADで描いた図はgifファイルに出力できません。 下記のようにコーディングしたのですが、”ぜひお越しください”しか表示されませんでした。 ほかの形式(dxf、wfm、bmp)でもいろいろ試したのですができませんでした。 どうすればAutoCADで作った図をフレーム上に表示できるのでしょうか? どなたか教えていただけませんか? import java.awt.*; import javax.swing.*; import javax.swing.ImageIcon; class map { public static void main(String args[]) { JFrame frame=new JFrame("map test"); JPanel panel=new JPanel(); ImageIcon ico=new ImageIcon("地図.gif"); JButton button=new JButton("ぜひお越しください",ico); panel.add(button); Container ct=frame.getContentPane(); ct.add(panel); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }

専門家に質問してみよう