package View.Panels; import View.PlotDialog; import com.sun.istack.internal.Nullable; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.LineBorder; import javax.swing.border.TitledBorder; /** * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. * * @Author: Armin Wolf * @Email: a_wolf28@uni-muenster.de * @Date: 21.06.2017. */ public class RMPanel extends JPanel { private JLabel labels; private JTextField input; private JButton startButton; private JPanel continer; private JPanel northPanel; private JPanel centerPanel; private PlotDialog plotDialog; private GridBagConstraints gbc; public RMPanel() { this.labels = new JLabel(); this.input = new JTextField(); this.setLayout(new BorderLayout()); this.northPanel = new JPanel(new BorderLayout()); this.centerPanel = new JPanel(new BorderLayout()); this.northPanel.setBorder(new TitledBorder("Konfiguration")); this.centerPanel.setBorder(new TitledBorder("Visualisierung")); this.continer = new JPanel(); this.continer.setLayout(new GridBagLayout()); this.gbc = new GridBagConstraints(); this.gbc.anchor = GridBagConstraints.NORTH; this.gbc.fill = GridBagConstraints.HORIZONTAL; addTextfieldAndInput(0, "\u00df (0 < \u00df < 1)", 0.5); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); this.startButton = new JButton("Start"); this.startButton.setFont(new Font("Verdana",Font.PLAIN, 16)); gbc.insets = new Insets(30, 0, 10, 0); gbc.gridx = 0; gbc.gridy = 2; gbc.weightx = 0.05; gbc.weighty = 0.05; buttonPanel.add(startButton); continer.add(buttonPanel, gbc); this.northPanel.add(continer, BorderLayout.CENTER); this.add(northPanel, BorderLayout.NORTH); this.add(centerPanel, BorderLayout.CENTER); } private void addTextfieldAndInput(int row, String name, Double value) { this.labels = new JLabel(name); this.labels.setFont(new Font("SansSerif", Font.PLAIN, 13)); this.input = new JTextField(); this.input.setText("" + value); gbc.insets = new Insets(0, 5, 0, 0); gbc.gridx = 0; gbc.gridy = row; gbc.weightx = 0.05; gbc.weighty = 0.05; continer.add(this.labels, gbc); gbc.gridx = 1; gbc.gridy = row; gbc.weightx = 0.9; gbc.weighty = 0.05; gbc.insets = new Insets(0, 0, 0, 5); continer.add(this.input, gbc); } public JButton getStartButton() { return startButton; } @Nullable public String getInput() { String input = ""; input = this.input.getText(); if (isNumeric(input)) return input; else JOptionPane.showMessageDialog(null, "Bitte geben Sie numerische Werte als Parameter an.","Fehler bei der Eingabe", JOptionPane.ERROR_MESSAGE); return null; } public void setInput(JTextField input) { this.input = input; } public PlotDialog getPlotDialog() { return plotDialog; } public void setPlotDialog(PlotDialog plotDialog) { this.plotDialog = plotDialog; if (this.centerPanel.getComponents().length > 0) this.centerPanel.remove(0); this.centerPanel.add(plotDialog, BorderLayout.CENTER); this.plotDialog.setVisible(true); this.repaint(); this.revalidate(); } public boolean isNumeric(String str) { try{ double d = Double.parseDouble(str); } catch(NumberFormatException nfe){ return false; } return true; } }