import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Color; import java.awt.geom.Ellipse2D; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JMenuBar; import javax.swing.JMenu; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; /** * SwingApp.java * * * * @author * @version */ public class SwingApp extends JFrame { class Canvas extends JPanel { public Canvas () { setSize(getPreferredSize()); Canvas.this.setBackground(Color.white); } public Dimension getPreferredSize() { return new Dimension(600, 600); } public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; Ellipse2D circle = new Ellipse2D.Double(0d, 0d, 100d, 100d); g2d.setColor(Color.red); g2d.translate(10, 10); g2d.draw(circle); g2d.fill(circle); } } public SwingApp() { super("A Simple Swing Application"); setSize(300, 300); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } public void windowOpened(WindowEvent e) {} } ); setJMenuBar(createMenu()); getContentPane().add(new JScrollPane(new Canvas())); } public static void main(String[] args) { SwingApp f = new SwingApp(); f.show(); } protected JMenuBar createMenu() { JMenuBar mb = new JMenuBar(); JMenu menu = new JMenu("File"); menu.add(new AbstractAction("Exit") { public void actionPerformed(ActionEvent e) { System.exit(0); } } ); mb.add(menu); return mb; } } // SwingApp