From 7ad2bea191c16ae86cc7499702b3f4ea05827425 Mon Sep 17 00:00:00 2001 From: Joel Baldauf Date: Thu, 10 Dec 2020 13:25:19 +0100 Subject: [PATCH] update with event listener --- Punkte-in-Noten/src/frame.java | 73 ++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 26 deletions(-) diff --git a/Punkte-in-Noten/src/frame.java b/Punkte-in-Noten/src/frame.java index 8967aab..5ad874f 100644 --- a/Punkte-in-Noten/src/frame.java +++ b/Punkte-in-Noten/src/frame.java @@ -4,6 +4,7 @@ import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; +import javax.swing.event.ChangeEvent; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; @@ -18,11 +19,13 @@ import javax.swing.JSpinner; import javax.swing.JTable; import javax.swing.JScrollPane; import javax.swing.table.DefaultTableModel; - +import java.awt.Font; +import javax.swing.event.ChangeListener; public class frame extends JFrame { private JPanel contentPane; private JTable table; + private JScrollPane scrollPane; /** * Launch the application. @@ -40,6 +43,27 @@ public class frame extends JFrame { }); } + + public void updateTable(JSpinner spMaxPoints, JSpinner spTotalPercentage) { + String[][] result = PunkteInNoten.calculateMarks((int)spMaxPoints.getValue(), (int)spTotalPercentage.getValue()); + String[] columnNames = {"Punkte", + "Prozente", + "IHK-Note", + "ganze Note" + }; + + table = new JTable(result, columnNames) { + @Override + public boolean isCellEditable(int row, int column) { + return false; + } + }; + table.setRowSelectionAllowed(false); + + scrollPane.setViewportView(table); + + } + /** * Create the frame. */ @@ -51,12 +75,12 @@ public class frame extends JFrame { setContentPane(contentPane); contentPane.setLayout(null); - JLabel lblTotalPercentage = new JLabel("Wievielen Prozenten sollen die Punkte entsprechen?"); - lblTotalPercentage.setBounds(15, 84, 397, 20); + JLabel lblTotalPercentage = new JLabel("Prozente"); + lblTotalPercentage.setBounds(160, 48, 73, 20); contentPane.add(lblTotalPercentage); - JLabel lblMaxPoints = new JLabel("Gesamtpunktzahl eingeben"); - lblMaxPoints.setBounds(15, 16, 228, 20); + JLabel lblMaxPoints = new JLabel("Gesamtpunktzahl"); + lblMaxPoints.setBounds(14, 48, 131, 20); contentPane.add(lblMaxPoints); @@ -64,18 +88,25 @@ public class frame extends JFrame { SpinnerNumberModel modelMaxPoints = new SpinnerNumberModel(0, 0, null, 1); JSpinner spMaxPoints = new JSpinner(modelMaxPoints); - spMaxPoints.setBounds(15, 42, 58, 26); + spMaxPoints.setBounds(14, 74, 58, 26); contentPane.add(spMaxPoints); // 100 als Startwert, von 0 bis 100, Schrittweite 1 SpinnerNumberModel modelTotalPercentage = new SpinnerNumberModel(100, 0, 100, 10); JSpinner spTotalPercentage = new JSpinner(modelTotalPercentage); - spTotalPercentage.setBounds(15, 120, 58, 26); + spTotalPercentage.setBounds(160, 74, 58, 26); contentPane.add(spTotalPercentage); - JScrollPane scrollPane = new JScrollPane(); + spMaxPoints.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + updateTable(spMaxPoints, spTotalPercentage); + } + }); + + scrollPane = new JScrollPane(); scrollPane.setBounds(399, 16, 379, 281); scrollPane.setBorder(null); contentPane.add(scrollPane); @@ -85,27 +116,17 @@ public class frame extends JFrame { Button btnCalc = new Button("Berechnen"); btnCalc.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - String[][] result = PunkteInNoten.calculateMarks((int)spMaxPoints.getValue(), (int)spTotalPercentage.getValue()); - String[] columnNames = {"Punkte", - "Prozente", - "IHK-Note", - "ganze Note" - }; - - table = new JTable(result, columnNames) { - @Override - public boolean isCellEditable(int row, int column) { - return false; - } - }; - table.setRowSelectionAllowed(false); - - scrollPane.setViewportView(table); - + updateTable(spMaxPoints, spTotalPercentage); } }); - btnCalc.setBounds(20, 167, 91, 27); + btnCalc.setBounds(272, 73, 91, 27); contentPane.add(btnCalc); + JLabel lblNewLabel = new JLabel("Test"); + lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 18)); + lblNewLabel.setBounds(15, 12, 69, 20); + contentPane.add(lblNewLabel); + } + }