簡體   English   中英

如何處理AWT框架中的關閉按鈕

[英]How to handle close button in AWT Frame

我從一些基本的Java2D示例(特別是在AWT下)開始,在“計算機圖形學Java2D / Java3D簡介”一書的第一個示例之后,我編寫了以下兩個類,一個作為“主”類:

package com.example.test;

public class Test {

    public static void main( String[] args ) {

            MyChart terminal = new MyChart();
            terminal.setTitle("The first Java 2D program");
            terminal.setSize(350,80);
            terminal.setVisible(true);

    }

}

還有一個擴展了AWT框架的框架:

package com.example.test;

import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MyChart extends Frame {


        public void MyChart() {

            this.addWindowListener(new WindowAdapter(){  
                public void windowClosing(WindowEvent e) {  
                    dispose();  
                }  
            });

        }

        public void paint(Graphics g) {
            Graphics2D g2d =  (Graphics2D) g;
            g2d.drawString("Hello world!", 30, 50);
        };


}

這會在屏幕上生成預期的“ Hello World”窗口,但是當我單擊關閉按鈕(Windows 10)時,什么也沒有發生。 我試圖弄清楚添加聽眾時沒有做錯什么。

歡迎提供任何技巧或建議,甚至進一步調試。

我使用的是Java:1.8.0_191和Windows 10(如上所述)。

您沒有在主類中調用MyChart函數。 下面的代碼工作正常。

public class Test {

        public static void main( String[] args ) {
            System.out.println("Terminal Group");
            MyChart terminal = new MyChart();
            terminal.MyChart();//I added this.
            terminal.setTitle("The first Java 2D program");
            terminal.setSize(350,80);
            terminal.setVisible(true);
    }

}

public class MyChart extends Frame {
        public void MyChart() {
            this.addWindowListener(new WindowAdapter(){  
                public void windowClosing(WindowEvent e) {  
               dispose();
               }  
            });

        }

        public void paint(Graphics g) {
            Graphics2D g2d =  (Graphics2D) g;
            g2d.drawString("Hello world!", 30, 50);
        };
}

構造函數定義錯誤,存在void ,必須將其刪除。

原始代碼(WRONG構造函數,使用void):

    public void MyChart() {

        this.addWindowListener(new WindowAdapter(){  
            public void windowClosing(WindowEvent e) {  
                dispose();  
            }  
        });

    }

更正的代碼(無無效):

public MyChart() {

        this.addWindowListener(new WindowAdapter(){  
            public void windowClosing(WindowEvent e) {  
                dispose();  
            }  
        });

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM