WItam,
Mój problem polega na tym , że chce w moim programie zarzadzającym Magazynem zrobic tak zwana małą Bazę danych w pliku TXT lub inny format , z ktorego i do ktorego bedzie zapisywała i odczytywała informację moja aplikacja . A mianowicie w NetBeansie mam wstawiona Tabele do ktorej moge dodawac i usuwać Dane (Tabela 3 kolumnowa) i teraz pytanie jak zrobic zeby dane z pliku wczytywaly sie automatycznie i zapisywaly przez nacisnięcie buttona zapisz. Jesli chodzi o wybieranie pliku do zapisu to akurat wiem lecz to sie tu nie sprawdza z góry dzięki i czekam na waszą pomoc.
Zaktualizuj model i wywołaj metodę fireTableDataChanged
.
Mógłbyś mniej wiecej pokazac jak uzyc tej metody ? dalej raczej sobie poradzę ale ciezko mam zawsze zaczać gdy jest cos nowego dla mnie .
O którą metodę pytasz? Jeśli o fireTableDataChanged
, to
model.fireTableDataChanged();
Jeśli o aktualizację modelu, to musisz pokazać kod tworzący table i model.
robie to w netbeans IDE wiec o tyle trudniej dla mnie mozliwe ze w IDE na zasadzie klocków czyli pod dany element piszemy kod jest latwiejsze . tutaj mam klase utworzona dla funkcjionowania tabeli czyli dodawanhia usuwania z niej danych .
package logins;
import javax.swing.JFrame;
import javax.swing.table.DefaultTableModel;
/**
*
* @author Radek
*/
public class DodajUsuńTowar extends javax.swing.JFrame {
/**
* Creates new form DodajUsuńTowar
*/
public DodajUsuńTowar() {
initComponents();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
TTabela = new javax.swing.JTable();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
TFNazwa = new javax.swing.JTextField();
TFIlość = new javax.swing.JTextField();
TFCena = new javax.swing.JTextField();
Bdodaj = new javax.swing.JButton();
Busuń = new javax.swing.JButton();
Buaktualnij = new javax.swing.JButton();
LInfo = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
TTabela.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Nazwa", "Ilość", "Cena"
}
));
TTabela.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
TTabelaMouseClicked(evt);
}
});
jScrollPane1.setViewportView(TTabela);
if (TTabela.getColumnModel().getColumnCount() > 0) {
TTabela.getColumnModel().getColumn(2).setResizable(false);
}
jLabel1.setText("Nazwa");
jLabel2.setText("Ilość");
jLabel3.setText("Cena");
Bdodaj.setText("Dodaj");
Bdodaj.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BdodajActionPerformed(evt);
}
});
Busuń.setText("Usuń");
Busuń.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BusuńActionPerformed(evt);
}
});
Buaktualnij.setText("Uaktualnij");
Buaktualnij.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BuaktualnijActionPerformed(evt);
}
});
LInfo.setForeground(new java.awt.Color(255, 51, 51));
jButton1.setText("Zapisz");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 490, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(64, 64, 64)
.addComponent(Bdodaj, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(29, 29, 29)
.addComponent(Busuń, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(30, 30, 30)
.addComponent(Buaktualnij, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton1))
.addGroup(layout.createSequentialGroup()
.addGap(43, 43, 43)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(LInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 370, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 58, Short.MAX_VALUE)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(55, 55, 55)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(TFIlość)
.addComponent(TFCena, javax.swing.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE)
.addComponent(TFNazwa))))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(37, 37, 37)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addGap(5, 5, 5)
.addComponent(TFNazwa))
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(TFIlość, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(21, 21, 21)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(TFCena, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Bdodaj)
.addComponent(Busuń)
.addComponent(Buaktualnij)
.addComponent(jButton1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(LInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void BdodajActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
if(!TFNazwa.getText().trim().equals(""))
{
model.addRow(new Object[]{TFNazwa.getText(),TFIlość.getText(),TFCena.getText()});
}
else
{
LInfo.setText("Produkt Nie może być dodany, pole 'Nazwa' musi być wypełnione!!!");
}
}
private void TTabelaMouseClicked(java.awt.event.MouseEvent evt) {
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
TFNazwa.setText(model.getValueAt(TTabela.getSelectedRow(), 0).toString());
TFIlość.setText(model.getValueAt(TTabela.getSelectedRow(), 1).toString());
TFCena.setText(model.getValueAt(TTabela.getSelectedRow(), 2).toString());
}
private void BuaktualnijActionPerformed(java.awt.event.ActionEvent evt) {
LInfo.setText("");
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
if(TTabela.getSelectedRow()==-1){
if(TTabela.getRowCount()==0){
LInfo.setText("Tabela jest pusta");
}else{
LInfo.setText("Musisz wybrać produkt");
}
}else{
model.setValueAt(TFNazwa.getText(), TTabela.getSelectedRow(), 0);
model.setValueAt(TFIlość.getText(), TTabela.getSelectedRow(), 1);
model.setValueAt(TFCena.getText(), TTabela.getSelectedRow(), 2);
}
}
private void BusuńActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
if(TTabela.getSelectedRow()==-1){
if(TTabela.getRowCount()==0){
LInfo.setText("Tabela jest pusta");
}else{
LInfo.setText("Musisz wybrać produkt");
}
}else{
model.removeRow(TTabela.getSelectedRow());
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
zapiszPlik();
}
/**
* @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(DodajUsuńTowar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(DodajUsuńTowar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(DodajUsuńTowar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(DodajUsuńTowar.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 DodajUsuńTowar().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton Bdodaj;
private javax.swing.JButton Buaktualnij;
private javax.swing.JButton Busuń;
private javax.swing.JLabel LInfo;
private javax.swing.JTextField TFCena;
private javax.swing.JTextField TFIlość;
private javax.swing.JTextField TFNazwa;
private javax.swing.JTable TTabela;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration
private void zapiszPlik() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
i mam na mysli przy nacisnięciu "jButton1""jButton2" zeby automatycznie tabela sie zapelniala danymi z pliku .
package logins;
import javax.swing.JFrame;
/**
*
* @author Radek
*/
public class login_s extends javax.swing.JFrame {
/**
* Creates new form login_s
*/
public login_s() {
initComponents();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setMaximumSize(new java.awt.Dimension(630, 470));
setMinimumSize(new java.awt.Dimension(630, 470));
setPreferredSize(new java.awt.Dimension(630, 470));
getContentPane().setLayout(null);
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
jLabel1.setText("PANEL MAGAZYNU");
getContentPane().add(jLabel1);
jLabel1.setBounds(170, 20, 262, 62);
jButton1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton1.setText("Lista Towaru");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
getContentPane().add(jButton1);
jButton1.setBounds(71, 159, 138, 141);
jButton2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jButton2.setText("Dodaj Towar / Usuń Towar");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
getContentPane().add(jButton2);
jButton2.setBounds(260, 160, 251, 141);
jLabel2.setIcon(new javax.swing.ImageIcon("C:\\Users\\Radek\\Documents\\NetBeansProjects\\magazyn1\\trr.jpg")); // NOI18N
getContentPane().add(jLabel2);
jLabel2.setBounds(0, 0, 631, 460);
jMenu1.setText("File");
jMenuItem1.setText("Wyjście");
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem1);
jMenuBar1.add(jMenu1);
jMenu2.setText("Edit");
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
pack();
}// </editor-fold>
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
ListaTowaru Info = new ListaTowaru();
Info.setVisible(true);
Info.setLocationRelativeTo(null);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
DodajUsuńTowar Info = new DodajUsuńTowar();
Info.setVisible(true);
Info.setLocationRelativeTo(null);
}
/**
* @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(login_s.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(login_s.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(login_s.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(login_s.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 login_s().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.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
// End of variables declaration
}
Prosiłem o kod tworzący model i tabelę, nie o całość (na widok kodu wygenerowanego przez NetBeans dostaję mdłości).
Wstawiaj kod w znaczniki <code class="java"></code>
.
private void BdodajActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
if(!TFNazwa.getText().trim().equals(""))
{
model.addRow(new Object[]{TFNazwa.getText(),TFIlość.getText(),TFCena.getText()});
}
else
{
LInfo.setText("Produkt Nie może być dodany, pole 'Nazwa' musi być wypełnione!!!");
}
}
private void TTabelaMouseClicked(java.awt.event.MouseEvent evt) {
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
TFNazwa.setText(model.getValueAt(TTabela.getSelectedRow(), 0).toString());
TFIlość.setText(model.getValueAt(TTabela.getSelectedRow(), 1).toString());
TFCena.setText(model.getValueAt(TTabela.getSelectedRow(), 2).toString());
}
private void BuaktualnijActionPerformed(java.awt.event.ActionEvent evt) {
LInfo.setText("");
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
if(TTabela.getSelectedRow()==-1){
if(TTabela.getRowCount()==0){
LInfo.setText("Tabela jest pusta");
}else{
LInfo.setText("Musisz wybrać produkt");
}
}else{
model.setValueAt(TFNazwa.getText(), TTabela.getSelectedRow(), 0);
model.setValueAt(TFIlość.getText(), TTabela.getSelectedRow(), 1);
model.setValueAt(TFCena.getText(), TTabela.getSelectedRow(), 2);
}
}
private void BusuńActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
if(TTabela.getSelectedRow()==-1){
if(TTabela.getRowCount()==0){
LInfo.setText("Tabela jest pusta");
}else{
LInfo.setText("Musisz wybrać produkt");
}
}else{
model.removeRow(TTabela.getSelectedRow());
}
}
.
W metodzie jButton1ActionPerformed
otwórz plik, czytaj w pętli wiersze tego pliku, na podstawie każdego odczytanego wiersza twórz tablicę tab
typu Object[]
i wywołuj metodę
model.addRow(tab);
znowu dzisiaj wrocilem do tematu i przeanalizowałem to co napisaleś . Ale czy mogl bys dalej pomoc z otworzeniem (odczytaniem poprawnie pliku i utworzeniem petli.? utworzylem jedna kolumne i teraz chce do niej dodac nasz "row" lecz musze otworzyc odczytać plik i linia po lini przetworzyć na tebele na razie chę zrobic jedna kolumne aby to funkcjonowało. w pętli dodałem "linia" gdyz nie wiem jak zrobic odczytanie i co bedzie moim punktem zaczepiania "row = jedna linia".
public void Odczyt(){
String linia;
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
model.setColumnIdentifiers(new String[]{"Nazwa"});
Object[] row = new Object[1];
for (int i =0; i < linia.length(); i++)
{
model.addRow(row);
}
}
.
for (int i =0; i < linia.length(); i++)
{
row[0] = linia[i];
model.addRow(row);
}
public void Odczyt() throws FileNotFoundException{
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
model.setColumnIdentifiers(new String[]{"Nazwa"});
Object[] row = new Object[1];
File file = new File("ala.txt");
Scanner in = new Scanner(file);
String zdanie = in.nextLine();
System.out.println(zdanie);
for (int i =0; i < zdanie.length(); i++)
{
row[0] = zdanie[i];
model.addRow(row);
}
}
Jak wygląda plik ala.txt
?
public void Odczyt() throws FileNotFoundException{
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
Object[] row = new Object[3]; //TTabela ma trzy kolumny
File file = new File("ala.txt");
Scanner in = new Scanner(file);
while(in.hasNextLine())
{
String line = in.nextLine();
row[0] = .... //kod zależy od budowy pliku
row[1] = ...
row[2] = ...
model.addRow(row);
}
model.fireTableDataChanged();
}
to jest plik ktory na razie ma zapis :
1
1
1
1
1
w ten sposob chce uwzglednic jedna kolumne
przy uwzglednieniue 3 kolumn bedzie musial czytac np";" jako przedzial kolumn czyli:
1 ; 1; 1
1 ; 1; 1
1 ; 1; 1
nie wiem czy dobrze to rozumiem
a jak pogodzić public void run(){ z public ListaTowaru() throws FileNotFoundException { gdyz po dodaniu do public ListaTowaru() + throws FileNotFoundException wyskakuje blad przy public void run(){ z kolei jesli bym nie dodał throws FileNotFoundException przy zainicjowanej Odczyt(); wyskoczy bład.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package logins;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.table.DefaultTableModel;
/**
*
* @author Radek
*/
public class ListaTowaru extends javax.swing.JFrame {
/**
* Creates new form ListaTowaru
*/
public ListaTowaru() throws FileNotFoundException {
initComponents();
Odczyt();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void Odczyt() throws FileNotFoundException{
DefaultTableModel model=(DefaultTableModel) TTabela.getModel();
model.setColumnIdentifiers(new String[]{"Nazwa"});
Object[] row = new Object[1];
File file = new File("ala.txt");
Scanner in = new Scanner(file);
while(in.hasNextLine())
{
String line = in.nextLine();
row[0] = line;
row[1] = line;
row[2] = line;
model.addRow(row);
}model.fireTableDataChanged();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane2 = new javax.swing.JScrollPane();
TTabela = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
TTabela.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane2.setViewportView(TTabela);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 505, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 386, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
/**
* @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(ListaTowaru.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(ListaTowaru.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(ListaTowaru.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(ListaTowaru.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 ListaTowaru().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTable TTabela;
private javax.swing.JScrollPane jScrollPane2;
// End of variables declaration
}
dobrze juz wszystko działa problem rozwiazany tylko teraz w sprawie odczytania tego pliku jak skonstruowac
while(in.hasNextLine())
{
String line = in.nextLine();
row[0] = line; // pierwsza kolumna jest poprawnie
row[1] = line; // a teraz zeby druga kolumna najlepiej czytala z pierwszej lini w naszym pliku po przecinku czyli pierwsza czyta 1 , 2 - druga kolumna , 3 - trzecia kolumna.
row[2] = line;
model.addRow(row);
}model.fireTableDataChanged();
String line = in.nextLine();
String[] columns = line.split(";");
row[0] = columns[0];
row[1] = columns[1];
row[2] = columns[2];
I zdecyduj się co jest w pliku, przecinek czy średnik.
Nie wiem czemu ale jakies bledy wywala
run:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
at logins.ListaTowaru.Odczyt(ListaTowaru.java:53)
at logins.ListaTowaru.<init>(ListaTowaru.java:32)
at logins.ListaTowaru$1.run(ListaTowaru.java:135)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Widocznie w jakimś wierszu pliku "ala.txt" nie ma żadnego średnika.
Dziekuję za pomoc wszystko działa . a jeszcze takie pytanko czy da rade zrobic tak ze jesli nieraz nie bedzie gdzies " ," lub ";" to pojdzie ?
String[] columns = line.split(";");
if(columns.length > 2){
row[0] = columns[0];
row[1] = columns[1];
row[2] = columns[2];
model.addRow(row);
}
mam jeszcze taki problem ze nie czyta np zapisu pliku " klucz fi 50 ,31 ,43 zł" nie wiem czemu same czyta same liczby