Здравствуйте. Есть готовый пример лабораторной:
Код:
package newpackage;
import javax.swing.table.DefaultTableModel;
public class MyTableClass extends DefaultTableModel{
public MyTableClass() {
super(new String[]{"Наименование", "Цена", "Количество", "Стоимость"}, 0);
}
/* запрет редактирования строк в таблице начало */
boolean[] canEdit = new boolean [] {
false, false, false, false
};
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
/* запрет редактирования строк в таблице конец */
}
Код исходного файла:
Код:
package newpackage;
import javax.swing.DefaultListModel;
public class NewJFrame extends javax.swing.JFrame {
MyTableClass mt = new MyTableClass();
DefaultListModel dlm = new DefaultListModel();
int i = 0;
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
jTable1.setModel(mt);
jList1.setModel(dlm);
}
@SuppressWarnings("unchecked")
//добавить запись
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try
{
double sum = Double.valueOf(jTextField2.getText()) * Double.valueOf(jTextField3.getText());
int LastIndex = jTable1.getRowCount()-1;
if (LastIndex >= 0) {
mt.removeRow(LastIndex);
}
mt.addRow(new String[]{jTextField1.getText(), String.valueOf(jTextField2.getText()), String.valueOf(jTextField3.getText()), String.valueOf(sum)});
dlm.addElement(jTextField1.getText());
LastIndex = jTable1.getRowCount();
summa(LastIndex - 1);
jLabel4.setText("");
jTextField1.setText("Наименование" + Integer.toString(i));
i++;
}
catch(Exception ex)
{
jLabel4.setText("Неверные значения в полях!!!");
}
}
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
//удалить запись
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
int selectedIndexes[] = jList1.getSelectedIndices();
for (int i = selectedIndexes.length - 1; i >= 0; i--) {
dlm.removeElementAt(selectedIndexes[i]);
mt.removeRow(selectedIndexes[i]);
}
int LastIndex = jTable1.getRowCount() - 1;
if (LastIndex >= 0) {
mt.removeRow(LastIndex);
}
summa(LastIndex-1);
}
//при клике на поле цена
private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {
jTextField2.setText("");
}
private void jTextField3ActionPerformed(java.awt.event.ActionEvent evt) {
jTextField3.setText("");
}
private void summa(int LastIndex) {
float Summary = 0;
for (int i = 0; i <= LastIndex; i++) {
Summary += Float.valueOf(String.valueOf(jTable1.getValueAt(i, 3)));
System.out.println(Summary);
}
mt.addRow(new String[]{"Итого:", "", "", String.valueOf(Summary)});
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JList jList1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable jTable1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
// End of variables declaration
}
Нужно сделать так, чтоб вариант моей лабы работал по тому же смыслу. В ней почти уже все готово, нужно только доделать, чтоб программа в таблицу добавляла по нажитию кнопки заполненные строчки и считала итого.