1
0
Fork 0
SVEN/QR/src/MainFrame.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);
}
}