Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2011, 18:30   #1
Darh
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 75
По умолчанию Таблица на Java в NeatBeans

Здравствуйте. Есть готовый пример лабораторной:

Код:
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                   
}
Нужно сделать так, чтоб вариант моей лабы работал по тому же смыслу. В ней почти уже все готово, нужно только доделать, чтоб программа в таблицу добавляла по нажитию кнопки заполненные строчки и считала итого.
Darh вне форума Ответить с цитированием
Старый 07.11.2011, 18:30   #2
Darh
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 75
По умолчанию

Вот мой код:

Код:
import javax.swing.table.DefaultTableModel;

public class MyTableModel extends DefaultTableModel {
    
    MyTableModel(){
        super (new String[]{"Наименование", "Цена", "Количество", "Стоимость"},4);
        setValueAt("Итого:",getRowCount()-1,0);
    }
    @Override
    public boolean isCellEditable (int row,int column){
        return (column!=3 && row!= getRowCount()-1);
    }
    @Override
    public void setValueAt (Object value, int row, int column){
        super.setValueAt(value, row, column);
        if (column>1||column>2){
        return;
    }
        setValueAt(getIntValue(row,1)*getIntValue(row,2),row,3);
        int summary=0;
        for(int i=0; i<getRowCount()-1;i++){
            summary+=getIntValue (i,3);
    }
        setValueAt (summary,getRowCount()-1,3);
    }
    private int getIntValue (int row, int column){
        Object value= getValueAt(row, column);
        if (value==null){
            return 0;
                }
        try{
            int iValue=Integer.parseInt(value.toString());
            return iValue;
        }
        catch(Exception ex){
            return 0;
        }
    }
}
Исходный файл:
Код:
import javax.swing.DefaultListModel;
import javax.swing.ListModel;
public class lab3 extends javax.swing.JFrame {
    MyTableModel mt = new MyTableModel();
        DefaultListModel dlm = new DefaultListModel();
        int i = 0;

    /** Creates new form lab3 */
    public lab3() {
        initComponents();
        MyTableModel tm=new MyTableModel();
        jTable1.setModel(tm);
    } 
@SuppressWarnings("unchecked")
 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       DefaultListModel model = new DefaultListModel();
    ListModel oldmodel = jList1.getModel();
    for (int i = 0; i < oldmodel.getSize(); i++) {
        model.addElement(oldmodel.getElementAt(i));
    }
    model.addElement(""+jTextField1.getText());
    jList1.setModel(model);
    
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       DefaultListModel model = new DefaultListModel();
    ListModel oldmodel = jList1.getModel();
    outer:
    for (int i = 0; i < oldmodel.getSize(); i++) {
        for (int j : jList1.getSelectedIndices()) {
            if (i == j) {
                continue outer;
            }   
        }
        model.addElement(oldmodel.getElementAt(i));
        
    }
    jList1.setModel(model);
    }                                        
 public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new lab3().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    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                   
}
Darh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив в GUI JAVA Swing Neatbeans IIPOTUBBCEX Общие вопросы по Java, Java SE, Kotlin 1 04.05.2011 19:30
чтение файла в массив строк java (Перенесено из Java SE) Sasha9132 Помощь студентам 0 18.11.2010 22:57
Помогите справиться с java.lang.OutOfMemoryError: Java heap space Levilaulada Помощь студентам 1 17.05.2009 10:59