From edce1d4ff989934dad7270462530a05d9fa306b1 Mon Sep 17 00:00:00 2001 From: Josh Ashton Date: Wed, 15 Nov 2023 10:14:25 -0700 Subject: [PATCH] basic gui implemented for week11 challenge. --- src/Week11/App.java | 5 +++ src/Week11/Button.java | 70 ++++++++++++++++++++++++++++++++++++++++++ src/Week11/Gui.java | 31 +++++++++++++++++++ src/Week11/Panel.java | 24 +++++++++++++++ src/Week11/run | 6 ++++ 5 files changed, 136 insertions(+) create mode 100644 src/Week11/App.java create mode 100644 src/Week11/Button.java create mode 100644 src/Week11/Gui.java create mode 100644 src/Week11/Panel.java create mode 100755 src/Week11/run diff --git a/src/Week11/App.java b/src/Week11/App.java new file mode 100644 index 0000000..c710be3 --- /dev/null +++ b/src/Week11/App.java @@ -0,0 +1,5 @@ +public class App { + public static void main(String[] args) { + Gui g = new Gui(); + } +} diff --git a/src/Week11/Button.java b/src/Week11/Button.java new file mode 100644 index 0000000..42a6d78 --- /dev/null +++ b/src/Week11/Button.java @@ -0,0 +1,70 @@ +import javax.swing.JButton; +import javax.swing.border.EmptyBorder; + +import java.awt.Color; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + +public class Button extends JButton { + private boolean selected; + private Color bg; + private Color fg; + + public Button(String buttonLabel, Color bg, Color fg) { + super(buttonLabel); + this.bg = bg; + this.fg = fg; + + deselect(); + } + + public void deselect() { + selected = false; + applyDefaultStyle(); + } + + public void select() { + selected = true; + applyFocusedStyle(); + } + + private void applyDefaultStyle() { + setBackground(bg); + setForeground(fg); + } + + private void applyFocusedStyle() { + setBackground(fg); + setForeground(bg); + } + + private void applyCommon() { + addMouseListener( + new MouseListener() { + @Override + public void mouseClicked(MouseEvent e) {} + + @Override + public void mousePressed(MouseEvent e) {} + + @Override + public void mouseReleased(MouseEvent e) {} + + @Override + public void mouseEntered(MouseEvent e) { + select(); + } + + @Override + public void mouseExited(MouseEvent e) { + deselect(); + } + }); + + setFocusPainted(false); + setBorder(new EmptyBorder(3,3,3,3)); + + repaint(); + revalidate(); + } +} diff --git a/src/Week11/Gui.java b/src/Week11/Gui.java new file mode 100644 index 0000000..aba1a8b --- /dev/null +++ b/src/Week11/Gui.java @@ -0,0 +1,31 @@ +import javax.swing.JFrame; +import javax.swing.UIManager; + +import java.awt.Color; +import java.awt.BorderLayout; +import java.awt.Dimension; + +public class Gui extends JFrame { + public Gui() { + super("Java Swing Challenge"); + init(); + + add(new Panel(Color.DARK_GRAY, Color.WHITE)); + + setVisible(true); + } + + private void init() { + setDefaultCloseOperation(EXIT_ON_CLOSE); + setLayout(new BorderLayout()); + setSize(new Dimension(750, 550)); + setResizable(false); + setLocationRelativeTo(null); + + try { + UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); + } catch (Exception e) { + System.out.println("Error with cross platform look and feel."); + } + } +} diff --git a/src/Week11/Panel.java b/src/Week11/Panel.java new file mode 100644 index 0000000..6ecb0ee --- /dev/null +++ b/src/Week11/Panel.java @@ -0,0 +1,24 @@ +import javax.swing.JPanel; + +import java.awt.BorderLayout; +import java.awt.Color; + +public class Panel extends JPanel { + private Color bg; + private Color fg; + + public Panel(Color bg, Color fg) { + super(); + this.bg = bg; + this.fg = fg; + + init(); + } + + private void init() { + setBackground(bg); + setForeground(fg); + + add(new Button("Example text", new Color(160, 32, 240), Color.WHITE)); + } +} diff --git a/src/Week11/run b/src/Week11/run new file mode 100755 index 0000000..df37d2b --- /dev/null +++ b/src/Week11/run @@ -0,0 +1,6 @@ +#!/bin/zsh + +javac *.java +java App + +rm *.class