From 9711ac4e321ebc7df6e565e48ff8e341366452e6 Mon Sep 17 00:00:00 2001 From: Joel Baldauf Date: Wed, 9 Dec 2020 15:03:39 +0100 Subject: [PATCH] add simple GUI --- Punkte-in-Noten/src/PunkteInNoten.java | 21 +++++ Punkte-in-Noten/src/frame.java | 110 +++++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 Punkte-in-Noten/src/frame.java diff --git a/Punkte-in-Noten/src/PunkteInNoten.java b/Punkte-in-Noten/src/PunkteInNoten.java index fe97bf5..9cc45ef 100644 --- a/Punkte-in-Noten/src/PunkteInNoten.java +++ b/Punkte-in-Noten/src/PunkteInNoten.java @@ -25,7 +25,28 @@ public class PunkteInNoten { else System.out.printf("%d Punkte %d%%\n", point, pointPercentage); } + } + + public static String[][] calculateMarks (int maxPoints, int totalPercentage) { + int pointPercentage = 0; + double markIHK = 0.0; + String[][] output = new String[maxPoints+1][4]; + for (int point=maxPoints; point>=0; point--) { + pointPercentage = (int) (((double)point/(double)maxPoints)*(double)totalPercentage); + markIHK = marksIHK[pointPercentage]; + if (totalPercentage == 100) { + output[maxPoints-point][0] = Integer.toString(point); + output[maxPoints-point][1] = Integer.toString(pointPercentage) + " %"; + output[maxPoints-point][2] = Double.toString(markIHK); + output[maxPoints-point][3] = Integer.toString((int)markIHK); + } + else { + output[maxPoints-point][0] = Integer.toString(point); + output[maxPoints-point][1] = Integer.toString(pointPercentage) + " %"; + } + } + return output; } } diff --git a/Punkte-in-Noten/src/frame.java b/Punkte-in-Noten/src/frame.java new file mode 100644 index 0000000..d94258e --- /dev/null +++ b/Punkte-in-Noten/src/frame.java @@ -0,0 +1,110 @@ +import java.awt.BorderLayout; +import java.awt.EventQueue; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; +import javax.swing.JButton; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import javax.swing.JTextField; +import javax.swing.SpinnerNumberModel; +import javax.swing.JLabel; +import java.awt.TextField; +import java.awt.Button; +import javax.swing.JList; +import javax.swing.JComboBox; +import javax.swing.JSpinner; +import javax.swing.JTable; +import javax.swing.JScrollPane; +import javax.swing.table.DefaultTableModel; + +public class frame extends JFrame { + + private JPanel contentPane; + private JTable table; + + /** + * Launch the application. + */ + public static void main(String[] args) { + EventQueue.invokeLater(new Runnable() { + public void run() { + try { + frame frame = new frame(); + frame.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + + /** + * Create the frame. + */ + public frame() { + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(100, 100, 815, 369); + contentPane = new JPanel(); + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + setContentPane(contentPane); + contentPane.setLayout(null); + + JLabel lblTotalPercentage = new JLabel("Wievielen Prozenten sollen die Punkte entsprechen?"); + lblTotalPercentage.setBounds(15, 84, 397, 20); + contentPane.add(lblTotalPercentage); + + JLabel lblMaxPoints = new JLabel("Gesamtpunktzahl eingeben"); + lblMaxPoints.setBounds(15, 16, 228, 20); + contentPane.add(lblMaxPoints); + + + // 0 als Startwert, von 0 bis ..., Schrittweite 1 + SpinnerNumberModel modelMaxPoints = new SpinnerNumberModel(0, 0, null, 1); + + JSpinner spMaxPoints = new JSpinner(modelMaxPoints); + spMaxPoints.setBounds(15, 42, 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); + contentPane.add(spTotalPercentage); + + + JScrollPane scrollPane = new JScrollPane(); + scrollPane.setBounds(399, 16, 379, 281); + contentPane.add(scrollPane); + + + + 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); + + } + }); + btnCalc.setBounds(20, 167, 91, 27); + contentPane.add(btnCalc); + + } +}