package view.panels.tabs; import com.sun.istack.internal.Nullable; import view.panels.PlotPanel; import javax.swing.*; import javax.swing.border.TitledBorder; import java.awt.*; /** * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. * * @Author: Armin Wolf * @Email: a_wolf28@uni-muenster.de * @Date: 02.06.2017. */ public class LMSPanel extends TabPanel { private JLabel[] labels; private JTextField[] input; private JPanel continer; private GridBagConstraints gbc; public LMSPanel() { super(); this.labels = new JLabel[2]; this.input = new JTextField[2]; 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, "Konstante", 0.5); addTextfieldAndInput(1, "Fehler", 0.05); addButton(2, getStartButton()); getNorthPanel().add(continer, BorderLayout.CENTER); this.add(getNorthPanel(), BorderLayout.NORTH); this.add(getCenterPanel(), BorderLayout.CENTER); } @Override protected void addTextfieldAndInput(int row, String name, Double value) { this.labels[row] = new JLabel(name); this.labels[row].setFont(new Font("SansSerif", Font.PLAIN, 12)); this.input[row] = new JTextField(); this.input[row].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[row], 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[row], gbc); } 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.gridx = 0; gbc.gridy = row; gbc.weightx = 0.05; gbc.weighty = 0.05; gbc.gridwidth = 1; buttonPanel.add(button); continer.add(buttonPanel, gbc); } @Nullable public String[] getInput() { String[] input = new String[3]; input[0] = this.input[0].getText(); input[1] = this.input[1].getText(); if (isNumeric(input[0]) && isNumeric(input[1])) { return input; } else { JOptionPane.showMessageDialog(this, "Bitte geben Sie numerische Werte als Parameter an.", "Fehler bei der Eingabe", JOptionPane.ERROR_MESSAGE); return null; } } public boolean isNumeric(String str) { try { double d = Double.parseDouble(str); } catch (NumberFormatException nfe) { return false; } return true; } }