我想添加更新按钮,GroupLayout
但程序抛出非法参数异常:
public class UsingFile extends javax.swing.JFrame {
DefaultTableModel dtm;
public UsingFile()
{
initComponents();`exception at this point`
dtm = (DefaultTableModel)myjtable.getModel();
readFile();
}
private void initComponents()
{
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
myjtable = new javax.swing.JTable();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
txtitem = new javax.swing.JTextField();
txtprice = new javax.swing.JTextField();
txtquantity=new javax.swing.JTextField();
txtreorder=new javax.swing.JTextField();
btnadd = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
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()
.addComponent(jLabel1)
.addContainerGap(80, Short.MAX_VALUE)));
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap(21, Short.MAX_VALUE)
.addComponent(jLabel1)
.addContainerGap()) );
myjtable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Item", "Price","quantity","reorder"
}
));
jScrollPane1.setViewportView(myjtable);
jLabel2.setText("Item");
jLabel3.setText("Price");
jLabel4.setText("quantity");
jLabel5.setText("reorder");
btnadd.setText("Add");
btnadd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnaddActionPerformed(evt);
}
}
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 421, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(19, 19, 19)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtitem, javax.swing.GroupLayout.PREFERRED_SIZE, 166, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(txtprice, javax.swing.GroupLayout.DEFAULT_SIZE, 114, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(txtquantity, javax.swing.GroupLayout.DEFAULT_SIZE, 114, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(txtreorder, javax.swing.GroupLayout.DEFAULT_SIZE, 114, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnadd)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnupdate)));`here i am adding Update button`
layout.setVerticalGroup(
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(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(txtitem, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3)
.addComponent(txtprice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4)
.addComponent(txtquantity, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5)
.addComponent(txtreorder, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnadd))
.addComponent(btnupdate)
.addComponent(btnupdate)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}
private void btnaddActionPerformed(java.awt.event.ActionEvent evt)
{
String item = txtitem.getText();
String price = txtprice.getText();
String quantity=txtquantity.getText();
String reorder=txtreorder.getText();
try {
String filename= "MyFile.txt";
FileWriter myfile = new FileWriter(filename,true);
PrintWriter outStream = new PrintWriter(myfile);
outStream.print(item);
outStream.print("|");
outStream.print(price);
outStream.print("|");
outStream.print(quantity);
outStream.print("|");
outStream.print(reorder);
outStream.print("\r\n");
outStream.close();
txtitem.setText("");
txtprice.setText("");
txtquantity.setText("");
txtreorder.setText("");
readFile();
} catch (Exception e) {
e.printStackTrace();}
}//end of button action
private void readFile()
{
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("C:\\uttara\\workspace\\FileDemo\\MyFile.txt"));
if (dtm.getRowCount() > 0) {
for (int i = dtm.getRowCount() - 1; i > -1; i--) {
dtm.removeRow(i);
}
}
while ((sCurrentLine = br.readLine()) != null) {
String item1=sCurrentLine.toString();
String regexp = "[|]+";
String[] lines = item1.split(regexp);
Vector v = new Vector();
String item2;
String price2;
String quantity2;
String reorder2;
item2=lines[0].toString();
price2=lines[1].toString();
quantity2=lines[2].toString();
reorder2=lines[3].toString();
v.add(item2);
v.add(price2);
v.add(quantity2);
v.add(reorder2);
dtm.toString();
dtm.addRow(v);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new UsingFile().setVisible(true); `error at this point`
}
});
}
'here i am initializing the components'
private javax.swing.JButton btnadd;
private javax.swing.JButton btnupdate;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable myjtable;
private javax.swing.JTextField txtitem;
private javax.swing.JTextField txtprice;
private javax.swing.JTextField txtquantity;
private javax.swing.JTextField txtreorder;
}