Hey I’m working on a Selling class of a simple Java Swing GUI supermarket project. When I add the first item to the billingtxt, it lists them normally as if there is nothing wrong! But if I add more items, it will bring out weird text as shown in the image. First item works just fine but second will bring weird text This is the text Im talking about:
My code is shared underneath. Any help would be greatly appreciated! Thanks in advance:)
package supermarket1;
import java.awt.Color;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import net.proteanit.sql.DbUtils;
/**
*
* @author patrickschnepf
*/
public class Selling1 extends javax.swing.JFrame {
/**
* Creates new form Selling1
*/
public Selling1() {
initComponents();
SelectSeller();
}
Connection Con = null;
Statement St = null;
ResultSet Rs = null;
public void SelectSeller()
{
try {
Con = DriverManager.getConnection("jdbc:derby://localhost:1527/SuperMarketdb1","User1","1234");
St = Con.createStatement();
Rs = St.executeQuery("Select * from User1.PRODUCTTBL");
ProductTable.setModel(DbUtils.resultSetToTableModel(Rs));
} catch (Exception e) {
e.printStackTrace();
}
}
int PrId, newQty;
public void update()
{
newQty = AvailQty - Integer.valueOf(ProdQty.getText());
try{
Con = DriverManager.getConnection("jdbc:derby://localhost:1527/SuperMarketdb1","User1","1234");
String Query ="Update User1.PRODUCTTBL set PRODQUANTITY="+newQty+""+" where PRODID="+PrId;
Statement Add = Con.createStatement();
Add.executeUpdate(Query);
SelectSeller();
}catch(SQLException e){
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel8 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
ProductTable = new javax.swing.JTable();
jLabel9 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jScrollPane2 = new javax.swing.JScrollPane();
BillTxt = new javax.swing.JTextArea();
AddBtn = new javax.swing.JButton();
jLabel4 = new javax.swing.JLabel();
ProdName = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
ProdQty = new javax.swing.JTextField();
ClearBtn = new javax.swing.JButton();
EditBtn = new javax.swing.JButton();
SummeLbl = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setBackground(new java.awt.Color(0, 153, 0));
jLabel8.setFont(new java.awt.Font("Arial Black", 1, 20)); // NOI18N
jLabel8.setForeground(new java.awt.Color(255, 255, 255));
jLabel8.setText("X");
jLabel8.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel8MouseClicked(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
jLabel8MouseEntered(evt);
}
});
jPanel2.setBackground(new java.awt.Color(255, 255, 255));
ProductTable.setAutoCreateRowSorter(true);
ProductTable.setFont(new java.awt.Font("Arial Black", 1, 12)); // NOI18N
ProductTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"ProdID", "Name", "Menge", "Preis", "Kategorie"
}
));
ProductTable.setRowHeight(25);
ProductTable.setSelectionBackground(new java.awt.Color(255, 102, 0));
ProductTable.setSelectionForeground(new java.awt.Color(255, 255, 255));
ProductTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
ProductTableMouseClicked(evt);
}
});
jScrollPane1.setViewportView(ProductTable);
jLabel9.setFont(new java.awt.Font("Arial Black", 1, 14)); // NOI18N
jLabel9.setForeground(new java.awt.Color(255, 102, 0));
jLabel9.setText("Wählen sie die zu Verkaufende Produkte aus:");
jLabel3.setFont(new java.awt.Font("Arial Black", 1, 20)); // NOI18N
jLabel3.setForeground(new java.awt.Color(255, 102, 0));
jLabel3.setText("Produkt Liste");
BillTxt.setColumns(20);
BillTxt.setFont(new java.awt.Font("Arial Black", 0, 14)); // NOI18N
BillTxt.setRows(5);
jScrollPane2.setViewportView(BillTxt);
AddBtn.setFont(new java.awt.Font("Arial Black", 1, 12)); // NOI18N
AddBtn.setForeground(new java.awt.Color(255, 102, 0));
AddBtn.setText("Zur Rechnung hinzufügen");
AddBtn.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
AddBtnMouseClicked(evt);
}
});
jLabel4.setFont(new java.awt.Font("Arial Black", 1, 14)); // NOI18N
jLabel4.setForeground(new java.awt.Color(255, 102, 0));
jLabel4.setText("Name:");
ProdName.setFont(new java.awt.Font("Arial Black", 1, 12)); // NOI18N
ProdName.setForeground(new java.awt.Color(255, 102, 0));
jLabel5.setFont(new java.awt.Font("Arial Black", 1, 14)); // NOI18N
jLabel5.setForeground(new java.awt.Color(255, 102, 0));
jLabel5.setText("Menge:");
ProdQty.setFont(new java.awt.Font("Arial Black", 1, 12)); // NOI18N
ProdQty.setForeground(new java.awt.Color(255, 102, 0));
ClearBtn.setFont(new java.awt.Font("Arial Black", 1, 12)); // NOI18N
ClearBtn.setForeground(new java.awt.Color(255, 102, 0));
ClearBtn.setText("Zurücksetzen");
ClearBtn.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
ClearBtnMouseClicked(evt);
}
});
ClearBtn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ClearBtnActionPerformed(evt);
}
});
EditBtn.setFont(new java.awt.Font("Arial Black", 1, 12)); // NOI18N
EditBtn.setForeground(new java.awt.Color(255, 102, 0));
EditBtn.setText("Drucken");
EditBtn.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
EditBtnMouseClicked(evt);
}
});
SummeLbl.setFont(new java.awt.Font("Arial Black", 1, 14)); // NOI18N
SummeLbl.setForeground(new java.awt.Color(255, 102, 0));
SummeLbl.setText("Summe: ");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(244, 244, 244)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel5)
.addComponent(jLabel4))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ProdQty, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ProdName, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(150, 150, 150)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 396, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 38, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addComponent(jLabel9)
.addGap(68, 68, 68))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addComponent(AddBtn)
.addGap(150, 150, 150)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel3)
.addGap(151, 151, 151))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 396, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addComponent(SummeLbl)
.addGap(159, 159, 159)))
.addGap(38, 38, 38))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
.addGap(85, 85, 85)
.addComponent(EditBtn)
.addGap(63, 63, 63)
.addComponent(ClearBtn)
.addContainerGap())))))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(19, 19, 19)
.addComponent(jLabel3)
.addGap(18, 18, 18)
.addComponent(jLabel9)
.addGap(15, 15, 15)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 180, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ProdName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ProdQty, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))))
.addGap(17, 17, 17)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 178, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(AddBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(SummeLbl)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(EditBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ClearBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)))
);
jLabel7.setFont(new java.awt.Font("Arial Black", 1, 20)); // NOI18N
jLabel7.setForeground(new java.awt.Color(255, 255, 255));
jLabel7.setText("Logout");
jLabel7.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel7MouseClicked(evt);
}
});
jLabel1.setFont(new java.awt.Font("Arial Black", 1, 20)); // NOI18N
jLabel1.setForeground(new java.awt.Color(255, 255, 255));
jLabel1.setText("Kasse");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel1)
.addGap(342, 342, 342)
.addComponent(jLabel8)
.addContainerGap())
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(26, 26, 26)
.addComponent(jLabel7)
.addGap(18, 18, 18)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel7)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel8)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(22, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
Double Uprice, ProdTot=0.0,GrdTot=0.0;
int AvailQty;
private void ProductTableMouseClicked(java.awt.event.MouseEvent evt) {
DefaultTableModel model = (DefaultTableModel)ProductTable.getModel();
int MyIndex = ProductTable.getSelectedRow();
PrId = Integer.valueOf(model.getValueAt(MyIndex, 0).toString());
AvailQty = Integer.valueOf(model.getValueAt(MyIndex, 2).toString());
ProdName.setText(model.getValueAt(MyIndex, 1).toString());
Uprice = Double.valueOf(model.getValueAt(MyIndex, 3).toString());
}
int i = 0;
private void AddBtnMouseClicked(java.awt.event.MouseEvent evt) {
if(ProdQty.getText().isEmpty() || ProdName.getText().isEmpty() )
{
JOptionPane.showMessageDialog(this, "Fehlende Informationen");
}
else if(AvailQty <= Integer.valueOf(ProdQty.getText()))
{
JOptionPane.showMessageDialog(this, "Nicht genug auf Lager");
}
else{
i++;
ProdTot = Uprice * Double.valueOf(ProdQty.getText());
GrdTot = GrdTot+ProdTot;
if( i == 1)
{
BillTxt.setText(BillTxt.getText()+"============Tante Emma Laden============\n"+"Nummer Produkt Preis Menge Summe\n"+i+" "+ProdName.getText()+" "+Uprice+" "+ProdQty.getText()+" "+ProdTot+"\n\t");
}else
{
BillTxt.setText(BillTxt.getText()+" "+i+" "+ProdName+" "+Uprice+" "+ProdQty.getText()+" "+ProdTot+"\n");
}
SummeLbl.setText("Zu zahlen: "+GrdTot + " €");
update();
}
}
private void ClearBtnMouseClicked(java.awt.event.MouseEvent evt) {
ProdName.setText("");
BillTxt.setText("");
ProdQty.setText("");
SummeLbl.setText("Summe: ");
}
private void ClearBtnActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void EditBtnMouseClicked(java.awt.event.MouseEvent evt) {
try{
BillTxt.print();
}catch (Exception e)
{
}
}
private void jLabel8MouseClicked(java.awt.event.MouseEvent evt) {
System.exit(0);
}
private void jLabel8MouseEntered(java.awt.event.MouseEvent evt) {
jLabel8.setForeground(Color.red);
}
private void jLabel7MouseClicked(java.awt.event.MouseEvent evt) {
new Login().setVisible(true);
this.dispose();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Selling1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Selling1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Selling1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Selling1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Selling1().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton AddBtn;
private javax.swing.JTextArea BillTxt;
private javax.swing.JButton ClearBtn;
private javax.swing.JButton EditBtn;
private javax.swing.JTextField ProdName;
private javax.swing.JTextField ProdQty;
private javax.swing.JTable ProductTable;
private javax.swing.JLabel SummeLbl;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
// End of variables declaration
}
Ive tried looking for errors but there were non and
You have an object named
ProdNamethat is lying; it's not a name at all, it's aJTextFieldobject. It isn't text, it's a field that can contain text. That field should be namedprodNameFieldfor some example (in java wewriteVariableNamesLikeThisandTypesLikeThis. You're signing yourself up for a life of annoyance if you don't adjust your style, all java code is written like that).In your code you have this line:
This calls
toString()on ProdName and concatenates that to the rest of the strings in this statement. The toString of a JTextField is the 'strange text' you see. You want to [A] make thatProdName.getText(), and [B] you want to adjust all your variable names because the problem with them is that they are confusing, and this question proves that it has confused you.prodQtyField,prodNameField, etcetera.