2017-06-06 11 views
1

Ich habe 2 JFrame in Netbeans (Booking, ConfirmBooking), beide dort Rahmen sind mit einer SQL-Datenbank verbunden. In der Buchungsklasse wählt der Benutzer aus der angezeigten Tabelle ein Resort aus, indem er eine Zahl in ein jtext-Feld eingibt. Wenn der Benutzer die nächste Taste drückt. Die Klassenbuchung ist erledigt und ConfirmBooking ist geöffnet. Ich möchte auf die Variable zugreifen, die in Booking im jtextfield in ConfirmBooking eingegeben wurde, um auf den Namen des Resorts zuzugreifen, das der Benutzer gebucht hat.Eine Variable zwischen Klassen teilen

Buchung Klassencodierung, ich möchte auf die ID zugreifen, die oben in der Klasse auf public int festgelegt ist.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    String x = jTextFieldID.getText(); 
    ID = Integer.valueOf(x); 
    String sql = "SELECT RESORT_NAME FROM LouwDataBase.Resorts WHERE ID = "+ ID; 
     try (PreparedStatement pstmt = conn.prepareStatement(sql)) { 

       try (ResultSet rs = pstmt.executeQuery()) { 
        if (rs.next()) { 
        String resortName = rs.getString("RESORT_NAME"); 

        int n = JOptionPane.showOptionDialog(null, 
        "Do you want to make a booking at "+resortName+"?", 
        "Confirm booking?", 
        JOptionPane.OK_CANCEL_OPTION, 
        JOptionPane.INFORMATION_MESSAGE, 
        null, 
        new String[]{"Yes I do", "No I don't"},"default"); 


        if (n == JOptionPane.YES_OPTION) 
        { 
         ConfirmBooking CB = new ConfirmBooking(); 
         dispose(); 
         CB.setLocationRelativeTo(null); 
         CB.setVisible(true); 

        } 
         else if (n == JOptionPane.NO_OPTION) 
        {    
      } 
     } 
    } 

} 
catch (SQLException ex) 
{ 
Logger.getLogger(Booking.class.getName()).log(Level.SEVERE, null, ex); 
} 

} 

ConfirmBooking Klasse Code

public void SetUp() 
    { 
     UserList(); 

     String sql = "SELECT RESORT_NAME, COST_PER_NIGHT_ZAR FROM LouwDataBase.Resorts WHERE ID = "+ ID; 
      try (PreparedStatement pstmt = conn.prepareStatement(sql)) 
      { 
        try (ResultSet rs = pstmt.executeQuery()) 
        { 
         if (rs.next()) 
         { 
         String Name1 = rs.getString("RESORT_NAME"); 
         double Price = rs.getDouble("COST_PER_NIGHT_ZAR"); 
         String Rands = Double.toString(Price); 
         ResortName.setText(Name1); 
         ResortPrice.setText("R "+Rands); 
         } 
        } 
      } 
      catch (SQLException ex) 
      { 
       Logger.getLogger(Booking.class.getName()).log(Level.SEVERE, null, ex); 
      } 
    } 
+0

Können Sie nicht Variablen, die Sie in 'ConfirmBooking' Konstruktor oder etwas brauchen injizieren? Darf ich diese Klassen nicht ändern? –

+0

Nein, das ist meine Schule PAT (Praktische Bewertung Aufgabe) Ich muss mein eigenes Programm erstellen und recherchieren über die Programmierung nicht in der Klasse gelernt. – Swiper

+0

Also, was genau hält Sie davon ab, Variablen über Konstruktor oder eine Methode zu übergeben? –

Antwort

1

Sie ein wenig die ConfirmBooking Klasse ändern könnte, so dass Sie vielleicht diese Variable in den Konstruktor der Klasse übergeben kann

und dann können Sie tun:

if (n == JOptionPane.YES_OPTION) { 
    ConfirmBooking CB = new ConfirmBooking(ID); 
    dispose(); 
    CB.setLocationRelativeTo(null); 
    CB.setVisible(true); 
} 

Sie speichern diese ID in einem Mitglied der ConfirmBooking und holen Sie das in der setUp-Methode, wann immer Sie es brauchen!

+0

Es hat funktioniert, danke – Swiper

+0

was meinst du zurück? Zurück zu wo? –

+0

nein ich habe einen Fehler gemacht es funktioniert jetzt – Swiper

0

Man könnte so etwas wie dies versuchen:

ConfirmBooking CB = new ConfirmBooking(); 
CB.setResortNumber(resortName); 
Verwandte Themen