• ベストアンサー

フレームの×ボタンを押しても閉じることが出来ない

ct27の回答

  • ct27
  • ベストアンサー率62% (48/77)
回答No.1

まず最初にprocessWindowEventはJFrame(swing)のメソッドなのでFrameでは 使用できません。(swingについてわからない場合は調べてみて下さいね。) なのでイベントを利用します。windowClosingはユーザが、ウィンドウのシステムメニューで ウィンドウを閉じようとしたときに呼び出されます。 とりあえず私はこんな風にしてみました。 class labelFrame extends Frame implements MouseListener { Label label; labelFrame(String title) { super(title); setLayout(new FlowLayout()); label = new Label("Hello from Java! This is a frame window."); add(label); addMouseListener(this); //↓ここから↓ this.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(WindowEvent e) { doWindowClose(); } }); //↑ここまで↑ } ********(中略)********* //↓メソッド↓ void doWindowClose(){ this.setVisible(false); } //↑メソッド↑ this.setVisible(false);の部分は閉じるのではなく非表示にする意味ですが 前回のソースを見ると切替をsetVisibleでやっていたのでこれにしてみました。

sr20detk
質問者

補足

*********************************************************** frame.java:7: frame は abstract として宣言する必要があります。mouseClicked(jav a.awt.event.MouseEvent) を frame で定義しません。 class frame extends Frame implements MouseListener *********************************************************** コンパイル時に上記エラーが出たのですが、内容が理解できず 対処に困っています。 教えていただいた、ソースを記述すると共に、修正しました。中略以外は (クラス名称の違いを除く)全て同じようなプログラムにはなっています。 他に何かいけない所があるのでしょうか?

関連するQ&A

  • java.awt.Label を縁取り表示したい

    Javaバージョンは、JDK-1.2.2_017 です。 (このバージョンじゃないと駄目なんです) ラベルの表示をするのにjava.awt.Labelを使用しているのですが、 ・Labelの縁取り(枠のようなもの) ・ボタンのように浮き上がらせる というようなことが、Labelクラスで可能でしょうか。 ラベルの見た目を変えたいので、どなたかご存知のかたいらっしゃいましたら 教えてください。お願いします。 import java.applet.Applet; import java.awt.*; public class label1 extends Applet { public void init(){ Label Lab = (Label)add(new Label("Label1" , Label.CENTER)); Lab.setText("test"); setBackground(Color.blue); add(Lab); } }

  • JAVAでの背景画像表示

    現在javaでゲームのメニュー画面を作っているのですが、ボタンを配置する所まではできたんですが、背景に画像を表示することができなくて困っています! import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.border.LineBorder; import javax.swing.border.EtchedBorder; import java.awt.Color; import java.awt.Container; public class Mati extends JFrame{ public static void main(String[] args){ Mati frame = new Mati(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10,650,650); frame.setTitle("街"); frame.setVisible(true); JPanel h = new JPanel(); h.setOpaque(false); ImageIcon icon1 = new ImageIcon("Mati.jpg"); JLabel label1 = new JLabel(icon1); JLabel label2 = new JLabel(); h.add(label1); } Mati(){ JButton button1 = new JButton("宿屋"); button1.setFont(new Font("Mairyo", Font.PLAIN, 30)); JButton button2 = new JButton("道具屋"); button2.setFont(new Font("Mairyo", Font.PLAIN, 30)); JButton button3 = new JButton("武器屋"); button3.setFont(new Font("Mairyo", Font.PLAIN, 30)); JButton button4 = new JButton("街を出る"); button4.setFont(new Font("Mairyo", Font.PLAIN, 30)); JPanel p = new JPanel(); p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); p.add(Box.createRigidArea(new Dimension(10,30))); p.add(button1); p.add(Box.createRigidArea(new Dimension(5,8))); p.add(button2); p.add(Box.createRigidArea(new Dimension(5,8))); p.add(button3); p.add(Box.createRigidArea(new Dimension(5,8))); p.add(button4); getContentPane().add(p, BorderLayout.CENTER); } } ソースはこのようになっています。これからどうすれば背景画像が表示されるか教えていただきたいです。 よろしくお願いします。

  • java アプレット

    学校の授業でアプレットを学んでいます。 しかし・・・ 下のプログラムで、計算した結果をlabel3にはりつけたいのですが、計算結果がでてくれません・・・ボタンを押しても何もでてきません。 コマンドプロンプトで、エラーはでてきません。 お手数ですが、誰かどこがいけないのか教えて下さい。 import java.awt.*; import java.awt.event.*; public class B extends java.applet.Applet implements ActionListener { Label label3 = new Label(); Button button2 = new Button(); TextField textfield1= new TextField(10); TextField textfield2= new TextField(10); public void init() { button2.setLabel("入力したらクリック!"); button2.setBounds(new Rectangle(50, 465, 120, 20)); this.setLayout(null); label3.setBackground(Color.blue); label3.setBounds(new Rectangle(325, 80, 200, 35)); textfield1.setBounds(100, 425, 100, 25); textfield2.setBounds(150, 350, 100, 25); this.add(textfield2, null); this.add(label3, null); this.add(textfield1, null); this.add(button2, null);} public void actionPerformed(ActionEvent event) {if(event.getSource() == button2) {int diff = Integer.parseInt(textfield1.getText()) - Integer.parseInt(textfield2.getText()); String otsuri; otsuri ="お釣りは"+ diff +"円です。"; label3.setText(otsuri);} }} よろしくお願いします。

    • ベストアンサー
    • Java
  • HTMLから起動時、動作不正?

    お世話になります。 JAVA初心者です。 --- JAVA --- import java.awt.Frame; import java.awt.Label; public class sampleframe extends Frame { private Label label = null; public sampleframe() { super(); initialize(); } public void initialize() { label = new Label(); label.setBounds(24, 106, 116, 13); label.setText("aaaaaaaaaa"); label.setAlignment(java.awt.Label.CENTER); this.add(label, null); this.setLayout(null); this.setSize(500,300); this.setTitle("Frame"); } } public class MainPart { public static void main(String[] args) { sampleframe x = new sampleframe(); x.setVisible(true); } } --- HTML --- <html> <head> <title>java</title> </head> <body> <applet code="MainPart.class">></applet> </body> </html> なのですが、DOSプロンプトから 実行するとOKなのですが HTMLから実行すると グレーの画面だけになります。 エラーはでてません。 ローカル、サーバーともに 同じです。 どこがまずいのでしょうか? 宜しくお願いいたします。 PS. IEの設定は調べて変更した つもりです。

    • ベストアンサー
    • Java
  • 動作しないプログラム

    このようなプログラムです。 /*<applet code = "Lesson14.class" width = 300 height =200></applet>*/ import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class Lesson14 extends Applet{ Button myBtn; Label mylbl; public void init(){ setBackground(Color.pink); setLayout(new BorderLayout()); myBtn = new Button("Clickしてね"); mylbl = new Label("",Label.CENTER); add("North",myBtn); add("Center",mylbl); myBtn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ repaint(); } }); } public void paint(Graphics g){ mylbl.setText("clickしたな!"); } } ---------------------------------------- はじめにmylblに””と何も入れておかずに、 後からsetTextで、文字をいれ、クリックされたときにrepaint()にて、表示される、という単純なものです。 しかし動作しないのです。 書籍を見ながらやったほうも、CDーROM殻読み出したものもだめでした。 僕の動作環境は1.4.1_03でXPと2000です。 その書籍は少し古くて1.3.0と書いてあります。 バージョンアップによってうまく動作しないのでしょうか・・・??

    • ベストアンサー
    • Java
  • JPEG画像のみを印刷したいのですが・・・

    度々質問します。 ブラウザに表示させたイメージ画像(JPEG)を印刷した所、印刷できま せんでした。 ちょうど他の方も印刷が出来ないと言うことで、ご質問されていまして、 参考になるURLにジャンプして色々見たのですが、正直よくわかりません。 本にもちょうど載っていたのですが、的外れな事が書かれているため、 参考にもなりません。 以下のソースは最初にA1.jpgを表示させ、その後「画像を変更」ボタンを 押すとB2.jpgに画像が変更されるものです。 やりたいのは、ボタンをもう一つ(印刷ボタン)追加して、そのボタンが 押された時に画像が印刷されるようにしたいんです。 基本的に画像のみを印刷したいと言う単純明快な形にしたいんです。 それで出来たらバカにでもわかるくらい簡単に書いていただけると助かります。 お手数ですがよろしくお願いします。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.*; public class Sample extends Applet { Button Henko; Image image; Color bgcolor; Font font; public void init() { setLayout(null); bgcolor = new Color(240,248,255); setBackground(bgcolor); setForeground(Color.black); font = new Font("Serif",Font.PLAIN,18); image = getImage(getDocumentBase(),"A1.jpg"); Henko = new Button("画像を変更"); Henko.setFont(font); Henko.setBounds(20,100,140,30); add(Henko); Henko.addActionListener(new Gazohenko()); } public void paint(Graphics g){ g.drawImage(image,150,150,this); } public class Gazohenko implements ActionListener{ public void actionPerformed(ActionEvent e){ image = getImage(getDocumentBase(), "B2.jpg"); repaint(); } } }

    • ベストアンサー
    • Java
  • javaでスタート画面を作っていて困っています。

    現在javaでゲームのスタート画面を作っているのですが、パネルが透過されずに困っています。 プログラムソースは import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.*; import java.awt.Font; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.*; import java.awt.event.*; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.border.LineBorder; import javax.swing.border.EtchedBorder; import java.awt.Color; import java.awt.Container; class Start最新版 extends JFrame{ public static void main(String args[]){ Start最新版 frame = new Start最新版("タイトル"); frame.setVisible(true); } Start最新版(String title){ setTitle(title); setBounds(10, 10, 1024, 768); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); p.setOpaque( false ); ImageIcon icon1 = new ImageIcon("Start.jpg"); JLabel label1 = new JLabel(icon1); JLabel label2 = new JLabel(); p.add(label1); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); JButton button1 = new JButton("ゲームを始める"); button1.setFont(new Font("Mairyo", Font.PLAIN, 30)); JPanel n = new JPanel(); n.setOpaque(false); n.setLayout(new BoxLayout(n, BoxLayout.Y_AXIS)); n.add(Box.createRigidArea(new Dimension(290,30))); n.add(button1); となっています。「ゲームを始める」ボタンだけを残して、周りのパネルを透過して画像を表示させたいのですが、うまくいきません!解決方法をご存知の方どうか教えていただきたいです!よろしくお願いします。

  • GUIを使用した電卓のボタンの表示について

    Javaの課題で電卓を制作しています。 まず見た目だけ完成させるべくボタンを配置を配置しましたが、 実行してみると正しく表示されるときと、されないときがあります(画像参照)。 現時点でのコードを掲載いたしますので、是非アドバイスをいただけると幸いです。よろしくお願いします。 ■以下コード package add; import java.awt.Button; import java.awt.Frame; import java.awt.TextField; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Calc extends Frame{ public static void main(String[] args){ Calc frame = new Calc(); } public Calc(){ super("電卓"); setSize(317,360); setVisible(true); addWindowListener(new CalcWindow()); //下記のウィンドウを閉じる用 //ボタンとフィールドの追加 TextField result = new TextField(""); result.setBounds(20,50,270,50); add(result); result.setFocusable(false); Button button1 = new Button("1"); button1.setBounds(20,120,70,30); add(button1); Button button2 = new Button("2"); button2.setBounds(100,120,70,30); add(button2); Button button3 = new Button("3"); button3.setBounds(180,120,70,30); add(button3); Button button4 = new Button("4"); button4.setBounds(20,165,70,30); add(button4); Button button5 = new Button("5"); button5.setBounds(100,165,70,30); add(button5); Button button6 = new Button("6"); button6.setBounds(180,165,70,30); add(button6); Button button7 = new Button("7"); button7.setBounds(20,210,70,30); add(button7); Button button8 = new Button("8"); button8.setBounds(100,210,70,30); add(button8); Button button9 = new Button("9"); button9.setBounds(180,210,70,30); add(button9); Button button0 = new Button("0"); button0.setBounds(100,255,70,30); add(button0); Button buttonC = new Button("C"); buttonC.setBounds(20,255,70,30); add(buttonC); Button buttonasta = new Button("."); buttonasta.setBounds(180,255,70,30); add(buttonasta); Button buttonplus = new Button("+"); buttonplus.setBounds(260,120,30,30); add(buttonplus); Button buttonminus = new Button("-"); buttonminus.setBounds(260,165,30,30); add(buttonminus); Button buttonkakeru = new Button("×"); buttonkakeru.setBounds(260,210,30,30); add(buttonkakeru); Button buttonsla = new Button("/"); buttonsla.setBounds(260,255,30,30); add(buttonsla); Button buttonE = new Button("="); buttonE.setBounds(20,300,270,30); add(buttonE); //ボタンとフィールドの追加ここまで } class CalcWindow extends WindowAdapter //ウィンドウを閉じる { public void windowClosing(WindowEvent e) { System.exit(0); } } } ※OKWAVEより補足:「Webシステム開発」についての質問です。

    • ベストアンサー
    • Java
  • java applet

    import java. applet.*; import java. awt. Button; import java. awt. Label; import java. awt. TextField; import java. awt. event.*; public class 1120 extends Applet implements ActionListener { private TextField box1 = new TextField(5); private TextField box2 = new TextField(5); private TextField box3 = new TextField(5); private Label moji1 = new Label(" と "); private Label moji2 = new Label(" の和は "); private Label moji3 = new Label(" である。 "); private Button ok = new Button("OK"); public void init() { resize( 320 , 240); add( box1 ); add( moji1 ); add( box2 ); add( moji2 ); add( box3 ); add( moji3 ); add( ok ); ok.addActionListener( this ); } public void actionPerformed( ActionEvent e ) { int i=0 ,j =0 , k; String t1 = box1.getText(); String t2 = box2.getText(); i = Integer.parseInt( t1 ); j = Integer.parseInt( t2 ); k = i + j; String s = Integer.toString( k ); box3. setText( s ); } } //上記のプログラムを書いたのですが、なぜかエラーが出てしまいます。勿論、自分でも見直しましたが、その理由がわかりませんでした。知識のある方、ご回答の方お願いします。

  • テキストボックスの値が変数に代入できない(2)

    お早うございます。 java初心者です、宜しくお願いします。 下記のような、アプレットのテキストボックスから値をとり 計算結果を表示するプログラムを書いてやりましたが、 値(実数値)がうまく変数に代入されていません。 この原因が分かりません、どこが悪いのか皆様方のご教示宜しくお願いいたします。 文法上のエラーは出ていません、AWTとswingとの混在は理解は出来ていますが、それとは別の箇所で原因があると思いますが、解決できません、宜しくお願いいたします。 ============================================================================== try { lon = Double.parseDouble(jta00.getText()) ; sita = Double.parseDouble(jta0.getText()) ; Zb = Double.parseDouble(jta1.getText()) ; Zg = Double.parseDouble(jta2.getText()) ; arfa = Double.parseDouble(jta3.getText()) ; Gf = Double.parseDouble(jta4.getText()) ; Vo = Double.parseDouble(jta5.getText()) ; } catch(Exception ee) { System.out.println( "lon = " + lon ) ; System.out.println( "sita = " + sita ) ; System.out.println( "Zb = " + Zb ) ; System.out.println( "Zg = " + Zg ) ; System.out.println( "arfa = " + arfa ) ; System.out.println( "Gf = " + Gf ) ; } //Lavelの作成(TextFieldの右側記事欄) Label lb_longth2 = new Label("(延長(m))"); lb_longth2.setFont(new Font("SansSerif",Font.BOLD,17)); Label lb_sita2 = new Label("(傾斜)"); lb_sita2.setFont(new Font("SansSerif",Font.BOLD,17)); Label lb_Zb2 = new Label("(区分係数)"); lb_Zb2.setFont(new Font("SansSerif",Font.BOLD,17)); Label lb_Zg2 = new Label("(区分係数)"); lb_Zg2.setFont(new Font("SansSerif",Font.BOLD,17)); Label lb_arfa2 = new Label("(区分係数)"); lb_arfa2.setFont(new Font("SansSerif",Font.BOLD,17)); Label lb_Gf2 = new Label("(区分係数)"); lb_Gf2.setFont(new Font("SansSerif",Font.BOLD,17)); Label lb_Vo2 = new Label("(速度(m/s))"); lb_Vo2.setFont(new Font("SansSerif",Font.BOLD,17)); //TextAreaの書式設定と貼付け、Lavelの貼付け jta00.setBackground(Color.white); jta00.setForeground(Color.red); jta00.setFont(new Font("Dialog",Font.PLAIN,20)); jta00.setBounds(90,125,100,30) ; //Panel Width lb_longth2.setBounds(200,125,250,20); add(jta00); add(lb_longth2); //(延長(m)) jta0.setBackground(Color.white); jta0.setForeground(Color.red); jta0.setFont(new Font("Dialog",Font.PLAIN,20)); jta0.setBounds(90,160,100,30) ; //sita lb_sita2.setBounds(200,165,250,20); add(jta0); add(lb_sita2); //(傾斜(度)) jta1.setBackground(Color.white); jta1.setForeground(Color.red); jta1.setFont(new Font("Dialog",Font.PLAIN,20)); jta1.setBounds(90,200,100,30) ; //Zb lb_Zb2.setBounds(200,205,170,20); add(jta1); add(lb_Zb2); //係数 jta2.setBackground(Color.white); jta2.setForeground(Color.red); jta2.setBounds(90,240,100,30); //Zg jta2.setFont(new Font("DialogInput",Font.BOLD,20)); lb_Zg2.setBounds(200,245,170,20); add(jta2); add(lb_Zg2);//係数 jta3.setBackground(Color.white); jta3.setForeground(Color.red); jta3.setBounds(90,280,100,30); //arfa jta3.setFont(new Font("Monospaced",Font.ITALIC,20)); lb_arfa2.setBounds(200,285,170,20); add(jta3); add(lb_arfa2);//係数 jta4.setBackground(Color.white); jta4.setForeground(Color.red); jta4.setFont(new Font("Serif",Font.PLAIN,20)); jta4.setBounds(90,320,100,30); //Gf lb_Gf2.setBounds(200,325,170,20); add(jta4); add(lb_Gf2); jta5.setBackground(Color.white); jta5.setForeground(Color.red); jta5.setFont(new Font("sansserif",Font.BOLD,25)); jta5.setBounds(90,360,100,30); //Vo lb_Vo2.setBounds(200,365,170,20); add(jta5); add(lb_Vo2); } public void actionPerformed(ActionEvent ae) { Cwu = 0.65 + 0.009 * sita ; //Follow Window Cwd = 0.71 + 0.016 * sita ; //Against Window Double Er0 = 1.7 * Math.pow(( Zb / Zg ) , arfa ) ; Er2= Er0 * Er0 ; E = Er2 * Gf ; q = 0.6 * E * Vo * Vo ; Wu = q * Cwu ; Wd = q * Cwd ; System.out.println("Wu = " + Wu ) ; System.out.println("Wd = " + W

    • ベストアンサー
    • Java