From d0416b02bd4809eceffe8ab296da6ef058f8a0a0 Mon Sep 17 00:00:00 2001 From: heimoshuiyu Date: Wed, 18 May 2022 23:06:27 +0800 Subject: [PATCH] lab12 --- lab/lab12/Question1/MyFrame.java | 30 ++++++++++++++++++++++++++ lab/lab12/Question1/MyPanel.java | 21 ++++++++++++++++++ lab/lab12/Question1/Start.java | 12 +++++++++++ lab/lab12/Question2/MyFrame.java | 28 ++++++++++++++++++++++++ lab/lab12/Question2/MyPanel.java | 37 ++++++++++++++++++++++++++++++++ lab/lab12/Question2/Start.java | 12 +++++++++++ 6 files changed, 140 insertions(+) create mode 100644 lab/lab12/Question1/MyFrame.java create mode 100644 lab/lab12/Question1/MyPanel.java create mode 100644 lab/lab12/Question1/Start.java create mode 100644 lab/lab12/Question2/MyFrame.java create mode 100644 lab/lab12/Question2/MyPanel.java create mode 100644 lab/lab12/Question2/Start.java diff --git a/lab/lab12/Question1/MyFrame.java b/lab/lab12/Question1/MyFrame.java new file mode 100644 index 0000000..f019731 --- /dev/null +++ b/lab/lab12/Question1/MyFrame.java @@ -0,0 +1,30 @@ +import java.awt.*; +import javax.swing.*; + +public class MyFrame extends JFrame { + public MyFrame() { + // init frame + setSize(400, 300); + setTitle("MyFrame"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLayout(new BorderLayout()); + + // craete components + JPanel panel = new JPanel(); + panel.setLayout(new FlowLayout(FlowLayout.CENTER)); + JButton button1 = new JButton("left"); + JButton button2 = new JButton("right"); + + // set layout + panel.add(button1); + panel.add(button2); + add(panel, BorderLayout.PAGE_START); + + // MyPanel object + MyPanel mp = new MyPanel(new FlowLayout(FlowLayout.CENTER)); + add(mp, BorderLayout.CENTER); + + // done + setVisible(true); + } +} diff --git a/lab/lab12/Question1/MyPanel.java b/lab/lab12/Question1/MyPanel.java new file mode 100644 index 0000000..bc64bac --- /dev/null +++ b/lab/lab12/Question1/MyPanel.java @@ -0,0 +1,21 @@ +import java.awt.*; +import javax.swing.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +public class MyPanel extends JPanel { + public MyPanel(LayoutManager layout) { + super(layout); + + // add anonymouse listener + addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + // print if left clicked + if (e.getButton() == MouseEvent.BUTTON1) { + System.out.println("Left button clicked at " + e.getX() + "," + e.getY()); + } + } + }); + } +} diff --git a/lab/lab12/Question1/Start.java b/lab/lab12/Question1/Start.java new file mode 100644 index 0000000..bc55f12 --- /dev/null +++ b/lab/lab12/Question1/Start.java @@ -0,0 +1,12 @@ +/** + * Author: CHEN Yongyuan (Walter) 1930006025 from OOP(1007). + */ +public class Start { + public static void main(String args[]) { + javax.swing.SwingUtilities.invokeLater(new Runnable() { + public void run() { + new MyFrame(); + } + }); + } +} diff --git a/lab/lab12/Question2/MyFrame.java b/lab/lab12/Question2/MyFrame.java new file mode 100644 index 0000000..0220765 --- /dev/null +++ b/lab/lab12/Question2/MyFrame.java @@ -0,0 +1,28 @@ +import java.awt.*; +import javax.swing.*; + +public class MyFrame extends JFrame { + public MyFrame() { + // init + setSize(400, 300); + setTitle("MyFrame"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLayout(new BorderLayout()); + + // add layout + JPanel panel = new JPanel(); + panel.setLayout(new FlowLayout(FlowLayout.CENTER)); + JButton button1 = new JButton("left"); + JButton button2 = new JButton("right"); + panel.add(button1); + panel.add(button2); + add(panel, BorderLayout.PAGE_START); + + // MyPanel object + MyPanel mp = new MyPanel(new FlowLayout(FlowLayout.CENTER)); + add(mp, BorderLayout.CENTER); + + // done + setVisible(true); + } +} diff --git a/lab/lab12/Question2/MyPanel.java b/lab/lab12/Question2/MyPanel.java new file mode 100644 index 0000000..9fd276d --- /dev/null +++ b/lab/lab12/Question2/MyPanel.java @@ -0,0 +1,37 @@ +import java.awt.*; +import javax.swing.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +public class MyPanel extends JPanel { + private int x = -1; + private int y = -1; + + public MyPanel(LayoutManager layout) { + super(layout); + + // anonymouse listener + addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + // left clicked + if (e.getButton() == MouseEvent.BUTTON1) { + System.out.println("Left button clicked at " + e.getX() + "," + e.getY()); + } + x = e.getX(); + y = e.getY(); + repaint(); + } + }); + } + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + + // red dot + g.setColor(Color.RED); + g.drawRect(x, y, 1, 1); + } + +} diff --git a/lab/lab12/Question2/Start.java b/lab/lab12/Question2/Start.java new file mode 100644 index 0000000..bc55f12 --- /dev/null +++ b/lab/lab12/Question2/Start.java @@ -0,0 +1,12 @@ +/** + * Author: CHEN Yongyuan (Walter) 1930006025 from OOP(1007). + */ +public class Start { + public static void main(String args[]) { + javax.swing.SwingUtilities.invokeLater(new Runnable() { + public void run() { + new MyFrame(); + } + }); + } +}