import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.border.EmptyBorder; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.JMenuBar; import javax.swing.JTabbedPane; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JMenu; import javax.swing.KeyStroke; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.awt.event.InputEvent; import java.awt.FlowLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JLabel; import com.jgoodies.forms.factories.DefaultComponentFactory; import javax.swing.JTextField; import javax.imageio.ImageIO; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JCheckBox; public class MainFrame extends JFrame { private JPanel contentPane; private JTextField textField; private JTextField textField_1; JButton btnEinlesen = new JButton("Einlesen"); JLabel lblNewLabel = new JLabel("Ausgelesener Wert: -"); JButton btnDrucken = new JButton("Drucken"); JButton btnSpeichern = new JButton("Speichern"); // Parent für JFileChooser JFrame _this = this; // File zum speichern / lesen File f; // Generierter QR-Code BufferedImage img = null; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); MainFrame frame = new MainFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public MainFrame() { setTitle("Sven.QR"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 400); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BorderLayout(0, 0)); JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); contentPane.add(tabbedPane, BorderLayout.CENTER); JPanel panel_1 = new JPanel(); tabbedPane.addTab(" QR-Code generieren ", null, panel_1, null); panel_1.setLayout(null); JLabel lblQrcode = new JLabel("QR-Code Wert:"); lblQrcode.setBounds(10, 14, 80, 14); panel_1.add(lblQrcode); textField_1 = new JTextField(); textField_1.setBounds(94, 11, 424, 20); panel_1.add(textField_1); textField_1.setColumns(10); // // = BUTTON GENERIEREN: Generiert einen QR-Code aus dem Wert der TextBox und speichert ihn. // JButton btnGenerieren = new JButton("Generieren"); btnGenerieren.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { int value = Integer.parseInt(textField_1.getText()); img = SvenQR.GenerateQR(value); } catch(Exception e1) { JOptionPane.showMessageDialog(_this, "QR-Code konnte nicht generiert werden: " + e1.getMessage()); return; } btnDrucken.setEnabled(true); btnSpeichern.setEnabled(true); } }); btnGenerieren.setBounds(94, 42, 89, 23); panel_1.add(btnGenerieren); // // = BUTTON DRUCKEN: Druckt den generierten QR-Code. // btnDrucken.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new Thread(new PrintActionListener(img)).start(); } }); btnDrucken.setEnabled(false); btnDrucken.setBounds(292, 42, 89, 23); panel_1.add(btnDrucken); // // = BUTTON SPEICHERN: Speichert den generierten QR-Code. // btnSpeichern.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // JFileChooser erstellen JFileChooser fc = new JFileChooser(); // Dateifilter setzen FileNameExtensionFilter filter = new FileNameExtensionFilter( "PNG (*.png)", "png"); fc.setFileFilter(filter); // Wenn im Dialog nicht OK gedrückt wurde, Methode verlassen if (fc.showSaveDialog(_this) != JFileChooser.APPROVE_OPTION) return; f = fc.getSelectedFile(); try { ImageIO.write(img, "png", f); } catch (IOException e1) { JOptionPane.showMessageDialog(_this, "QR-Code konnte nicht gespeichert werden: " + e1.getMessage()); return; } } }); btnSpeichern.setEnabled(false); btnSpeichern.setBounds(193, 42, 89, 23); panel_1.add(btnSpeichern); JPanel panel = new JPanel(); tabbedPane.addTab(" QR-Code einlesen ", null, panel, null); panel.setLayout(null); JLabel lblQuelldatei = new JLabel("Quelldatei:"); lblQuelldatei.setBounds(10, 12, 55, 14); panel.add(lblQuelldatei); textField = new JTextField(); textField.setBounds(75, 8, 451, 21); panel.add(textField); textField.setColumns(10); // // = BUTTON ... : Wählt die Quelldatei mit einem JFileChooser aus. = // JButton button = new JButton("..."); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // JFileChooser erstellen JFileChooser fc = new JFileChooser(); fc.setCurrentDirectory(new File("T:/INTABI19/Projekt/ELMO Interactive Toolbox/rec")); // Wenn im Dialog nicht OK gedrückt wurde, Methode verlassen if (fc.showOpenDialog(_this) != JFileChooser.APPROVE_OPTION) return; // Ausgewählte Datei auslesen f = fc.getSelectedFile(); // Pfad der Datei in Textbox schreiben textField.setText(f.getAbsolutePath()); // Einlesen-Button aktivieren btnEinlesen.setEnabled(true); } }); button.setBounds(536, 7, 23, 23); panel.add(button); // // = BUTTON EINLESEN: Liest ausgewählten QR-Code aus Datei ein. = // btnEinlesen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Ausgelesener Wert int value = -1; // Versuche, den QR-Code einzulesen // Wenn das nicht geht, wird eine Fehlermeldung ausgegeben try { value = SvenQR.ReadQR(f.getAbsolutePath()); } catch (IOException e1) { JOptionPane.showMessageDialog(_this, "QR-Code konnte nicht eingelesen werden: " + e1.getMessage()); return; } // Ausgelesener Wert auf Label schreiben lblNewLabel.setText("Ausgelesener Wert: " + value); } }); btnEinlesen.setEnabled(false); btnEinlesen.setBounds(75, 40, 89, 23); panel.add(btnEinlesen); lblNewLabel.setBounds(10, 74, 549, 14); panel.add(lblNewLabel); } }