diff --git a/pom.xml b/pom.xml index ea6a449..7f049aa 100644 --- a/pom.xml +++ b/pom.xml @@ -42,5 +42,12 @@ opencsv 3.9 + + + + com.jtattoo + JTattoo + 1.6.11 + \ No newline at end of file diff --git a/src/main/java/App.java b/src/main/java/App.java index 72e8791..625fd8c 100644 --- a/src/main/java/App.java +++ b/src/main/java/App.java @@ -2,8 +2,10 @@ import Model.Arrangement; import Presenter.Presenter; import View.MainFrame; import java.awt.Font; +import javax.swing.JFrame; import javax.swing.SwingUtilities; import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; /** * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. @@ -28,11 +30,27 @@ public class App { } } + private static void setLookAndFeel(JFrame view){ + try { + UIManager.setLookAndFeel("com.jtattoo.plaf.aluminium.AluminiumLookAndFeel"); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (UnsupportedLookAndFeelException e) { + e.printStackTrace(); + } + SwingUtilities.updateComponentTreeUI(view); + } + public static void main(String[] args) { SwingUtilities.invokeLater(() -> { MainFrame view = new MainFrame(); view.setPresenter(new Presenter(new Arrangement(), view)); + setLookAndFeel(view); setUIFont (new javax.swing.plaf.FontUIResource(new Font("Verdana",Font.PLAIN, 12))); }); diff --git a/src/main/java/View/MainFrame.java b/src/main/java/View/MainFrame.java index 4f4a418..0d04131 100644 --- a/src/main/java/View/MainFrame.java +++ b/src/main/java/View/MainFrame.java @@ -7,13 +7,19 @@ import View.Panels.MenuPanel; import View.Panels.OutputPanel; import View.Panels.RMPanel; import java.awt.BorderLayout; +import java.awt.ComponentOrientation; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; +import java.awt.Image; import java.awt.event.ActionEvent; import java.io.File; +import java.io.IOException; import java.util.List; +import javax.imageio.ImageIO; import javax.swing.BorderFactory; +import javax.swing.BoxLayout; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFileChooser; @@ -50,6 +56,7 @@ public class MainFrame extends JFrame { private LMSPanel lmsPanel; private RMPanel rmPanel; private JPanel pane; + private JPanel northPanel; private ArrangementDialog arrangement; private JDialog arrangementDialog; @@ -76,7 +83,7 @@ public class MainFrame extends JFrame { setCloseOperations(); setActionListeners(); - + setIcons(); disableFunctionality(); this.setVisible(true); } @@ -147,6 +154,8 @@ public class MainFrame extends JFrame { private void addComponents() { pane.add(arrangementButton); pane.add(importButton); + northPanel.add(menupanel); + northPanel.add(pane); setupSplitPane(); setupTabbedPane(); @@ -154,9 +163,9 @@ public class MainFrame extends JFrame { progressContent.add(progressBar, BorderLayout.NORTH); progressBar.setBorder(BorderFactory.createTitledBorder("Import...")); - this.add(pane, BorderLayout.SOUTH); + this.add(northPanel, BorderLayout.NORTH); this.add(splitpane, BorderLayout.CENTER); - this.add(menupanel, BorderLayout.NORTH); + } private void setupSplitPane() { @@ -185,7 +194,8 @@ public class MainFrame extends JFrame { private void setLayouts() { this.setLayout(new BorderLayout()); - pane.setLayout(new FlowLayout()); + pane.setLayout(new FlowLayout(FlowLayout.LEFT)); + northPanel.setLayout(new BoxLayout(northPanel, BoxLayout.Y_AXIS)); } private void initializeComponents() { @@ -194,6 +204,7 @@ public class MainFrame extends JFrame { lmsPanel = new LMSPanel(); rmPanel = new RMPanel(); menupanel = new MenuPanel(); + northPanel = new JPanel(); //Dialogs arrangementDialog = new JDialog(); @@ -212,6 +223,22 @@ public class MainFrame extends JFrame { importButton = new JButton(); } + private void setIcons(){ + try { + ClassLoader classLoader = getClass().getClassLoader(); + Image imgImport = ImageIO.read(classLoader.getResource("import.png")).getScaledInstance(16,16,Image.SCALE_SMOOTH); + Image imgPlot = ImageIO.read(classLoader.getResource("plot.png")).getScaledInstance(16,16,Image.SCALE_SMOOTH); + Image imgStart = ImageIO.read(classLoader.getResource("start.png")).getScaledInstance(32,32,Image.SCALE_SMOOTH); + + importButton.setIcon(new ImageIcon(imgImport)); + arrangementButton.setIcon(new ImageIcon(imgPlot)); + lmsPanel.getStartButton().setIcon(new ImageIcon(imgStart)); + rmPanel.getStartButton().setIcon(new ImageIcon(imgStart)); + } catch (IOException e) { + e.printStackTrace(); + } + } + private void setActionListeners() { arrangementButton.addActionListener((ActionEvent e) -> { Thread t = new Thread(() -> getPresenter().visualizeDualLines()); diff --git a/src/main/java/View/Panels/LMSPanel.java b/src/main/java/View/Panels/LMSPanel.java index ceb67ef..aec5218 100644 --- a/src/main/java/View/Panels/LMSPanel.java +++ b/src/main/java/View/Panels/LMSPanel.java @@ -2,10 +2,15 @@ package View.Panels; import View.PlotDialog; import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; +import javax.swing.BorderFactory; +import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; @@ -50,7 +55,10 @@ public class LMSPanel extends JPanel { addTextfieldAndInput(0, "Konstante", 0.5); addTextfieldAndInput(1, "Fehler", 0.05); - this.startButton = new JButton("start"); + this.startButton = new JButton("Start"); + this.startButton.setFont(new Font("Verdana",Font.PLAIN, 16)); + this.startButton.setContentAreaFilled(false); + this.startButton.setFocusPainted(false); addButton(2, startButton); this.northPanel.add(continer, BorderLayout.CENTER); @@ -81,14 +89,18 @@ public class LMSPanel extends JPanel { } private void addButton(int row, JButton button) { + JPanel buttonPanel = new JPanel(); + buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); + + gbc.insets = new Insets(30, 0, 5, 0); - gbc.insets = new Insets(30, 5, 10, 0); gbc.gridx = 0; gbc.gridy = row; gbc.weightx = 0.05; gbc.weighty = 0.05; - - continer.add(button, gbc); + gbc.gridwidth = 1; + buttonPanel.add(button); + continer.add(buttonPanel, gbc); } public JButton getStartButton() { diff --git a/src/main/java/View/Panels/RMPanel.java b/src/main/java/View/Panels/RMPanel.java index 9ceb209..1459405 100644 --- a/src/main/java/View/Panels/RMPanel.java +++ b/src/main/java/View/Panels/RMPanel.java @@ -2,6 +2,7 @@ package View.Panels; import View.PlotDialog; import java.awt.BorderLayout; +import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; @@ -50,13 +51,19 @@ public class RMPanel extends JPanel { addTextfieldAndInput(0, "\u00df (0 < \u00df < 1)", 0.5); - this.startButton = new JButton("start"); - gbc.insets = new Insets(30, 5, 10, 0); + JPanel buttonPanel = new JPanel(); + buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); + this.startButton = new JButton("Start"); + this.startButton.setFont(new Font("Verdana",Font.PLAIN, 16)); + this.startButton.setContentAreaFilled(false); + this.startButton.setFocusPainted(false); + gbc.insets = new Insets(30, 0, 10, 0); gbc.gridx = 0; gbc.gridy = 2; gbc.weightx = 0.05; gbc.weighty = 0.05; - continer.add(startButton, gbc); + buttonPanel.add(startButton); + continer.add(buttonPanel, gbc); this.northPanel.add(continer, BorderLayout.CENTER); this.add(northPanel, BorderLayout.NORTH); diff --git a/src/main/resources/import.png b/src/main/resources/import.png new file mode 100644 index 0000000..68701de Binary files /dev/null and b/src/main/resources/import.png differ diff --git a/src/main/resources/plot.png b/src/main/resources/plot.png new file mode 100644 index 0000000..65e7550 Binary files /dev/null and b/src/main/resources/plot.png differ diff --git a/src/main/resources/start.png b/src/main/resources/start.png new file mode 100644 index 0000000..7f332f8 Binary files /dev/null and b/src/main/resources/start.png differ