Header

  1. View current page

    knowledge님의 노트

Profile_img_60x60_01
1

Graphics & listener

implement WindowListner, then using self

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.TextField;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class MyCanvas extends Canvas {
        private static final long serialVersionUID = -1;
        private GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        private String fonts[] = ge.getAvailableFontFamilyNames();

        public void paint(Graphics g) {
                setForeground(Color.ORANGE);
               
                g.drawString("tst", 10, 20);
                g.drawRect(50, 10, 30, 20);
                int xpos[] = { 150, 165, 170, 160, 155 };
                int ypos[] = { 20, 10, 20, 30, 30 };
                g.drawPolygon(xpos, ypos, xpos.length);
                g.drawRoundRect(10, 50, 40, 40, 10, 10);
                g.drawOval(60, 50, 50, 20);
                g.fillArc(100, 50, 40, 40, 45, -75);
               
                int style[] = {Font.BOLD, Font.ITALIC, Font.PLAIN};
               
                for(int i = 0; i < 9; i++) {
                        g.setColor(new Color(10 * i, 20 * i, 15 * i));
                        g.setFont(new Font(fonts[i], style[i % 3], 10 + 2 * i));
                        g.drawString(fonts[i], 10, 200 + (10 + 4 * i * i));
                }
        }

        public static void main(String[] args) {
                Frame f = new MyFrame("tst");
                f.setSize(200, 600);
                f.setVisible(true);
        }
}

class MyFrame extends Frame implements WindowListener {
        private static final long serialVersionUID = -1;
        private Canvas canvas;
        private TextField txtPoints;
       
        public MyFrame(String title) {
                super(title);
                this.canvas = new MyCanvas();
                this.txtPoints = new TextField(10);

                canvas.addMouseListener(new MouseAdapter() {
                        public void mouseClicked(MouseEvent e) {
                                txtPoints.setText("x:" + e.getX() + " y: " + e.getY());
                        }
                });
                add(txtPoints, "North");
                add(canvas, "Center");

                addWindowListener(this);
        }

        public void windowOpened(WindowEvent e) {}
        public void windowClosed(WindowEvent e) {}
        public void windowIconified(WindowEvent e) {}
        public void windowDeiconified(WindowEvent e) {}
        public void windowDeactivated(WindowEvent e) {}
        public void windowActivated(WindowEvent e) {}
        public void windowClosing(WindowEvent e) {
                this.setVisible(false);
                this.dispose();
        }
}

using WindowAdapter

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.TextField;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MyCanvas extends Canvas {
        private static final long serialVersionUID = -1;
        private GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        private String fonts[] = ge.getAvailableFontFamilyNames();

        public void paint(Graphics g) {
                setForeground(Color.ORANGE);
               
                g.drawString("tst", 10, 20);
                g.drawRect(50, 10, 30, 20);
                int xpos[] = { 150, 165, 170, 160, 155 };
                int ypos[] = { 20, 10, 20, 30, 30 };
                g.drawPolygon(xpos, ypos, xpos.length);
                g.drawRoundRect(10, 50, 40, 40, 10, 10);
                g.drawOval(60, 50, 50, 20);
                g.fillArc(100, 50, 40, 40, 45, -75);
               
                int style[] = {Font.BOLD, Font.ITALIC, Font.PLAIN};
               
                for(int i = 0; i < 9; i++) {
                        g.setColor(new Color(10 * i, 20 * i, 15 * i));
                        g.setFont(new Font(fonts[i], style[i % 3], 10 + 2 * i));
                        g.drawString(fonts[i], 10, 200 + (10 + 4 * i * i));
                }
        }

        public static void main(String[] args) {
                Frame f = new MyFrame("tst");
                f.setSize(200, 600);
                f.setVisible(true);
        }
}

class MyFrame extends Frame {
        private static final long serialVersionUID = -1;
        private TextField txtPoints;
        private Frame self;
       
        public MyFrame(String title) {
                super(title);
                self = this;
                Canvas canvas = new MyCanvas();
                this.txtPoints = new TextField(10);

                add(txtPoints, "North");
                add(canvas, "Center");

                canvas.addMouseListener(new MouseAdapter() {
                        public void mouseClicked(MouseEvent e) {
                                txtPoints.setText("x:" + e.getX() + " y: " + e.getY());
                        }
                });

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

History

Last edited on 05/18/2007 11:42 by persona

Comments (0)

You must log in to leave a comment. Please sign in.