228 lines
6.7 KiB
Java
228 lines
6.7 KiB
Java
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);
|
|
}
|
|
}
|