Halli hallo zusammen,
ich habe mir mal etwas gebastelt.. Undzwar geht es um Warenbestellung. Das Ziel besteht darin alles zu wiederholen, was ich in den letzten Monaten gemacht habe. Ich habe Datenbanken, GUI's etc. angewendet. Nun habe ich ein Problem.
Die Klasse Telefonkauf:
Bestellen Klasse:
Undzwar kann ich bei der "bestellen Methode (Telefonkauf-Klasse)" nicht die angeklickten Informationen in einem JLabel speichern und ausgeben. Ich würde sie gerne in einem JLabel abspeichern und dann es übergeben, damit es bei der Bestellen-Klasse ausgegeben werden kann.
Zum Testen haben ich zwei normale JLabels erstellt und die mal ausführen lassen. Bei der "initialize() Methode" wird es angezeigt, aber bei der "bestellen() - Methode" geht es nicht.
Ich würde mich sehr freuen, wenn Ihr mir irgendwie weiter helfen könnt. Sei es Tipps oder irgendwelche Code-Verbesserungen.
Mit freundlichen Grüßen
iLoveProgramming
ich habe mir mal etwas gebastelt.. Undzwar geht es um Warenbestellung. Das Ziel besteht darin alles zu wiederholen, was ich in den letzten Monaten gemacht habe. Ich habe Datenbanken, GUI's etc. angewendet. Nun habe ich ein Problem.
Die Klasse Telefonkauf:
Java:
import java.awt.EventQueue;
import javax.swing.*;
import java.awt.*;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.border.TitledBorder;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import java.awt.Component;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.GroupLayout.Alignment;
public class Telefonkauf {
public JFrame frame;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private Connection conn = null;
private Statement stmt = null;
private String query;
public JPanel panelArtikel;
public static JTextField menge;
Bestellen gui = new Bestellen();
public static int buttonClick = 0;
public static JLabel gekaufteArtikeln[];
private JPanel panel_3;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Telefonkauf window = new Telefonkauf();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Telefonkauf() {
initialize();
}
private void initialize() {
//Sql connection
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection ("jdbc:sqlite:C:/Users/Hakan/Desktop/SQL/JDBC.sqlite");
stmt = conn.createStatement();
} catch (ClassNotFoundException e1) {e1.printStackTrace();}
catch (SQLException e1) {e1.printStackTrace();}
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e) {}
frame = new JFrame();
frame.setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\winconf\\workspace_light_luna\\DAB\\src\\Logo\\topLogo.png"));
frame.getContentPane().setBackground(SystemColor.activeCaption);
frame.setBounds(100, 100, 1122, 788);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel_1 = new JPanel();
panel_1.setBorder(new TitledBorder(null, " ", TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel_1.setBounds(10, 7, 200, 62);
frame.getContentPane().add(panel_1);
panel_1.setLayout(null);
JLabel lblAngemeldetAls = new JLabel("User:");
lblAngemeldetAls.setBounds(14, 18, 60, 23);
panel_1.add(lblAngemeldetAls);
lblAngemeldetAls.setForeground(new Color(0, 0, 51));
lblAngemeldetAls.setFont(new Font("Trajan Pro 3", Font.BOLD, 17));
lblAngemeldetAls.setBackground(new Color(204, 153, 0));
try{
String anmeldeInfo = "SELECT * FROM S_KUNDE WHERE EMAIL ='" + Anmelderegister.anmelden.getText() + "' ";
ResultSet email = stmt.executeQuery(anmeldeInfo);
int count=0;
while(email.next()){
count++;
if(count == 1){
JLabel angemeldetLabel = new JLabel(email.getString(2) + " " + email.getString(3));
angemeldetLabel.setForeground(new Color(51, 102, 51));
angemeldetLabel.setFont(new Font("Source Code Pro Semibold", Font.BOLD, 18));
angemeldetLabel.setBounds(68, 22, 200, 16);
panel_1.add(angemeldetLabel);
}
}
}catch(SQLException e){
e.printStackTrace();
}
JLabel lblBestellung = new JLabel("Bestellung:");
lblBestellung.setForeground(new Color(0, 0, 51));
lblBestellung.setFont(new Font("Trajan Pro 3", Font.BOLD, 18));
lblBestellung.setBackground(new Color(204, 153, 0));
lblBestellung.setBounds(10, 113, 134, 30);
frame.getContentPane().add(lblBestellung);
JLabel lblSucheArtikel = new JLabel("Suche Artikel:");
lblSucheArtikel.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 14));
lblSucheArtikel.setBounds(20, 167, 116, 30);
frame.getContentPane().add(lblSucheArtikel);
JPanel panel = new JPanel();
panel.setBackground(Color.BLACK);
panel.setBorder(new TitledBorder(null, "Gefundene Artikeln:", TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel.setBounds(138, 217, 396, 450);
frame.getContentPane().add(panel);
panel.setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setBounds(6, 6, 384, 438);
panel.add(scrollPane);
panelArtikel = new JPanel();
scrollPane.setViewportView(panelArtikel);
GroupLayout gl_panelArtikel = new GroupLayout(panelArtikel);
gl_panelArtikel.setHorizontalGroup(gl_panelArtikel.createParallelGroup(Alignment.LEADING).addGap(0, 363, Short.MAX_VALUE));
gl_panelArtikel.setVerticalGroup(gl_panelArtikel.createParallelGroup(Alignment.LEADING).addGap(0, 432, Short.MAX_VALUE));
panelArtikel.setLayout(gl_panelArtikel);
JPanel panel_2 = new JPanel();
panel_2.setBorder(new TitledBorder(null, " ", TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel_2.setBounds(664, 217, 401, 450);
frame.getContentPane().add(panel_2);
panel_2.setLayout(null);
JLabel lblArtikelNichtGefunden = new JLabel("Artikel nicht gefunden?");
lblArtikelNichtGefunden.setBounds(14, 18, 313, 30);
panel_2.add(lblArtikelNichtGefunden);
lblArtikelNichtGefunden.setForeground(new Color(0, 0, 51));
lblArtikelNichtGefunden.setFont(new Font("Trajan Pro 3", Font.BOLD, 18));
lblArtikelNichtGefunden.setBackground(new Color(204, 153, 0));
JLabel lblBestellenSieDie = new JLabel("Bestellen Sie die gew\u00FCnschte Artikeln:");
lblBestellenSieDie.setBounds(14, 36, 373, 30);
panel_2.add(lblBestellenSieDie);
lblBestellenSieDie.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 14));
JLabel lblKategorie = new JLabel("Kategorie:");
lblKategorie.setBounds(14, 88, 102, 30);
panel_2.add(lblKategorie);
lblKategorie.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 13));
JComboBox comboBox = new JComboBox();
comboBox.setBounds(119, 90, 166, 26);
panel_2.add(comboBox);
JLabel lblBezeichnung = new JLabel("Bezeichnung:");
lblBezeichnung.setBounds(14, 130, 102, 30);
panel_2.add(lblBezeichnung);
lblBezeichnung.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 13));
JComboBox comboBox_1 = new JComboBox();
comboBox_1.setBounds(119, 132, 166, 26);
panel_2.add(comboBox_1);
JLabel lblMenge = new JLabel("Menge:");
lblMenge.setBounds(14, 217, 55, 30);
panel_2.add(lblMenge);
lblMenge.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 13));
JComboBox comboBox_2 = new JComboBox();
comboBox_2.setBounds(119, 219, 55, 26);
panel_2.add(comboBox_2);
JLabel lblNettopreis = new JLabel("Nettopreis:");
lblNettopreis.setBounds(14, 175, 102, 30);
panel_2.add(lblNettopreis);
lblNettopreis.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 13));
textField_1 = new JTextField();
textField_1.setBounds(119, 174, 92, 26);
panel_2.add(textField_1);
textField_1.setEditable(false);
textField_1.setForeground(new Color(204, 153, 0));
textField_1.setColumns(10);
JLabel lblGesamtpreis = new JLabel("Gesamtpreis:");
lblGesamtpreis.setBounds(14, 301, 102, 30);
panel_2.add(lblGesamtpreis);
lblGesamtpreis.setFont(new Font("Arial monospaced for SAP", Font.BOLD, 13));
textField_2 = new JTextField();
textField_2.setBounds(119, 303, 177, 26);
panel_2.add(textField_2);
textField_2.setEditable(false);
textField_2.setForeground(new Color(204, 153, 0));
textField_2.setColumns(10);
JButton btnBestellen = new JButton("Bestellen");
btnBestellen.setBounds(38, 392, 332, 37);
panel_2.add(btnBestellen);
btnBestellen.setForeground(new Color(204, 153, 0));
btnBestellen.setBackground(new Color(0, 51, 51));
textField = new JTextField();
textField.addCaretListener(new CaretListener() {
public void caretUpdate(CaretEvent e) {
panelArtikel.removeAll();
try{
String query = "SELECT * FROM s_artikel JOIN s_posten USING(artikelnr) where lower(bezeichnung) LIKE lower('" + textField.getText() + "%')";
ResultSet res = stmt.executeQuery (query);
int count = 0;
int positionY = 10;
while (res.next()) {
String artikel = res.getString(2);
String nettopreis = res.getString(4);
String bestand = res.getString(6);
String artikelnr = res.getString(1);
String bestellnr = res.getString(10);
count++;
JLabel label = new JLabel("<html><body><br><div style='border-style: solid;'>"+artikel + " "+ "<br>" + "Nettopreis: "+ nettopreis + "€" + " " + "<br>" + "Bestand: " + bestand +"\n"+ "</div></body></html>");
//Bestellen
JButton bestellen = new JButton("Bestellen");
bestellen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
buttonClick++;
menge = new JTextField();
menge.setBounds(0, 0, 100, 20);
Object[] message = {"Menge eingeben: \n", menge};
Object[] options = { "Bestellen", "Abbrechen" };
int n = JOptionPane.showOptionDialog(new JFrame(), message, "", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
if(n == JOptionPane.OK_OPTION){ // Bestellen
if(!menge.getText().matches("^[0-9]*$")){
System.out.println("Bei der Menge nur Zahlen eingeben!");
}else if(menge.getText().equals("")){
System.out.println("Bitte Menge eingeben!");
}else{
try {
String suchen = "SELECT * FROM s_artikel JOIN s_posten USING (artikelnr) WHERE artikelnr = '"+ artikelnr + "' AND bezeichnung = '"+ artikel +"' AND bestellnr = '"+ bestellnr +"'";
ResultSet su = stmt.executeQuery(suchen);
int zaehler = 0;
while(su.next()){
zaehler++;
if(zaehler == 1){
//System.out.println(artikel + " " + nettopreis + " " + bestand);
buttonClick = 1;
bestellen(artikel , nettopreis, bestand);
}
}
} catch (SQLException e1) {e1.printStackTrace();}
}
}if(n == JOptionPane.NO_OPTION){ // Abbrechen
System.out.println("Bestellung abgebrochen!");
}
if(n == JOptionPane.CLOSED_OPTION){ // Abbrechen
System.out.println("Bestellung abgebrochen!");
}
}
});
bestellen.setBounds(8, positionY+75, 115, 20);
bestellen.setBackground(Color.BLACK);
bestellen.setForeground(Color.ORANGE);
//bestellen ende
label.setBounds(10, positionY, 300, 80);
panelArtikel.add(label);
panelArtikel.add(bestellen);
positionY+=90;
}
gl_panelArtikel.setVerticalGroup(gl_panelArtikel.createParallelGroup(Alignment.LEADING).addGap(0, positionY + 40, Short.MAX_VALUE));
panelArtikel.repaint();
}catch(SQLException a){
a.printStackTrace();
}
}
});
textField.setForeground(new Color(204, 153, 0));
textField.setBounds(138, 161, 396, 44);
frame.getContentPane().add(textField);
textField.setColumns(10);
JButton fertig = new JButton("Bestellung abschliessen");
fertig.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
frame.dispose();
gui.frame.setVisible(true);
}
});
fertig.setForeground(new Color(204, 153, 0));
fertig.setBackground(new Color(0, 51, 51));
fertig.setBounds(138, 680, 396, 37);
frame.getContentPane().add(fertig);
JPanel panel_4 = new JPanel();
panel_4.setBorder(new TitledBorder(null, "JPanel title", TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel_4.setBounds(664, 18, 310, 177);
frame.getContentPane().add(panel_4);
panel_4.setLayout(null);
//NUR FÜR TESTZWECKE GEHÖRT ANSONSTEN NICHT ZUR GUI!!!
JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane_1.setBounds(14, 18, 282, 145);
panel_4.add(scrollPane_1);
panel_3 = new JPanel();
scrollPane_1.setViewportView(panel_3);
//Wird angezeigt
JLabel tst = new JLabel("Test");
tst.setBounds(5, 5, 25, 25);
panel_3.add(tst);
}
public void bestellen(String artikel, String nettopreis, String bestand){
int posY = 5;
gekaufteArtikeln = new JLabel[buttonClick];
System.out.println(buttonClick);
for(int i = 0; i < gekaufteArtikeln.length; i++){
gekaufteArtikeln[i] = new JLabel("<html><body><br><div style='border-style: solid;'>"+artikel + " "+ "<br>" + "Nettopreis: "+ nettopreis + "€" + " " + "<br>" + "Bestand: " + bestand +"\n"+ "</div></body></html>");
gekaufteArtikeln[i].setBounds(5, posY + 5, 55, 16);
frame.getContentPane().add(gekaufteArtikeln[i]);
//Wird nicht angezeigt
JLabel tst_2 = new JLabel("Test_2");
tst_2.setBounds(5, 5, 25, 25);
panel_3.add(tst_2);
}
}
}
Bestellen Klasse:
Java:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.UIManager;
import java.awt.SystemColor;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JPanel;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.border.TitledBorder;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ScrollPaneConstants;
public class Bestellen {
public JFrame frame;
private Connection conn = null;
private Statement stmt = null;
private String query;
//public static JLabel bestellteArtikeln [] = new JLabel[Telefonkauf.buttonClick];
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Bestellen window = new Bestellen();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Bestellen() {
initialize();
}
private void initialize() {
//Sql connection
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection ("jdbc:sqlite:C:/Users/Hakan/Desktop/SQL/JDBC.sqlite");
stmt = conn.createStatement();
} catch (ClassNotFoundException e1) {e1.printStackTrace();}
catch (SQLException e1) {e1.printStackTrace();}
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e) {}
frame = new JFrame();
frame.setIconImage(Toolkit.getDefaultToolkit().getImage("G:\\winconf\\workspace_light_luna\\DAB\\src\\Logo\\topLogo.png"));
frame.getContentPane().setBackground(SystemColor.activeCaption);
frame.getContentPane().setLayout(null);
frame.setBackground(SystemColor.inactiveCaptionText);
frame.setBounds(100, 100, 750, 664);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel lblBestellteArtikeln = new JLabel("Bestellte Artikeln:");
lblBestellteArtikeln.setForeground(new Color(0, 0, 51));
lblBestellteArtikeln.setFont(new Font("Trajan Pro 3", Font.BOLD, 18));
lblBestellteArtikeln.setBackground(new Color(204, 153, 0));
lblBestellteArtikeln.setBounds(151, 38, 244, 30);
frame.getContentPane().add(lblBestellteArtikeln);
JPanel panel = new JPanel();
panel.setBorder(new TitledBorder(null, "Bestellte Artikeln:", TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel.setBackground(Color.BLACK);
panel.setBounds(151, 80, 426, 455);
frame.getContentPane().add(panel);
panel.setLayout(null);
JButton button = new JButton("Bestellen");
button.setForeground(new Color(204, 153, 0));
button.setBackground(new Color(0, 51, 51));
button.setBounds(378, 547, 199, 37);
frame.getContentPane().add(button);
JButton btnZurck = new JButton("Zur\u00FCck");
/*btnZurck.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
frame.dispose();
Telefonkauf obj = new Telefonkauf();
obj.frame.setVisible(true);
}
});*/
btnZurck.setForeground(new Color(204, 153, 0));
btnZurck.setBackground(new Color(0, 51, 51));
btnZurck.setBounds(151, 547, 199, 37);
frame.getContentPane().add(btnZurck);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setBounds(6, 6, 414, 443);
panel.add(scrollPane);
JPanel panel_1 = new JPanel();
scrollPane.setViewportView(panel_1);
panel_1.setLayout(null);
//Informationen aus Telefonkauf entnehmen und ausgaben
/*int positionY = 10;
for(int i = 0; i < Telefonkauf.gekaufteArtikeln.length ;i++){ --> Liefert null zurück
Telefonkauf.gekaufteArtikeln[i].setBounds(16, positionY+14, 371, 45);
panel_1.add(Telefonkauf.gekaufteArtikeln[i]);
}*/
}
}
Undzwar kann ich bei der "bestellen Methode (Telefonkauf-Klasse)" nicht die angeklickten Informationen in einem JLabel speichern und ausgeben. Ich würde sie gerne in einem JLabel abspeichern und dann es übergeben, damit es bei der Bestellen-Klasse ausgegeben werden kann.
Zum Testen haben ich zwei normale JLabels erstellt und die mal ausführen lassen. Bei der "initialize() Methode" wird es angezeigt, aber bei der "bestellen() - Methode" geht es nicht.
Ich würde mich sehr freuen, wenn Ihr mir irgendwie weiter helfen könnt. Sei es Tipps oder irgendwelche Code-Verbesserungen.
Mit freundlichen Grüßen
iLoveProgramming
Zuletzt bearbeitet: