Avatar
Vera
Neregistrovaný
Avatar
Vera:

Ahojte, vytvorila som si jednoduchu tabulku v GUI, ktora bude evidovat zamestnancov, RC, pocet odpracovanych hodin a sadzbu za hodinu. Ale po nahodeni zamestnancov potrebujem vystup ulozit do suboru. Poradte mi ako...:(

zatial mi to takto funguje:

package javatabulka;

import javax.swing.JOp­tionPane;
import javax.swing.ta­ble.DefaultTa­bleModel;

public class NewJFrameTabulka extends javax.swing.JFrame {

boolean editable = false;

/**
* Creates new form NewJFrameTabulka
*/
public NewJFrameTabulka() {
initComponents();
jTable1.setMo­del(new javax.swing.ta­ble.DefaultTa­bleModel(
new Object[][]{},
new String[]{
jLabel1.getText(), jLabel2.getText(), jLabel3.getText(), jLabel4.getText(), "Total"
}));
}

/**
* 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.
*/
@SuppressWarnin­gs("unchecked")
// <editor-fold defaultstate="co­llapsed" desc="Generated Code">
private void initComponents() {

jScrollPane1 = new javax.swing.JScro­llPane();
jTable1 = new javax.swing.JTa­ble();
jTextField1 = new javax.swing.JTex­tField();
jTextField2 = new javax.swing.JTex­tField();
jTextField3 = new javax.swing.JTex­tField();
jTextField4 = new javax.swing.JTex­tField();
jLabel1 = new javax.swing.JLa­bel();
jLabel2 = new javax.swing.JLa­bel();
jLabel3 = new javax.swing.JLa­bel();
jLabel4 = new javax.swing.JLa­bel();
jButton1 = new javax.swing.JBut­ton();
jButton2 = new javax.swing.JBut­ton();
jButton3 = new javax.swing.JBut­ton();

setDefaultClo­seOperation(ja­vax.swing.Win­dowConstants.E­XIT_ON_CLOSE);

jTable1.setMo­del(new javax.swing.ta­ble.DefaultTa­bleModel(
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"
}
));
jScrollPane1.set­ViewportView(jTa­ble1);

jLabel1.setTex­t("Meno a priezvisko");

jLabel2.setTex­t("Kód");

jLabel3.setTex­t("Počet hodín");

jLabel4.setTex­t("Sadzba");

jButton1.setTex­t("OK");
jButton1.addAc­tionListener(new java.awt.even­t.ActionListe­ner() {
public void actionPerformed(ja­va.awt.event.Ac­tionEvent evt) {
jButton1Action­Performed(evt);
}
});

jButton2.setTex­t("Upraviť");
jButton2.addAc­tionListener(new java.awt.even­t.ActionListe­ner() {
public void actionPerformed(ja­va.awt.event.Ac­tionEvent evt) {
jButton2Action­Performed(evt);
}
});

jButton3.setTex­t("Odstrániť");
jButton3.addAc­tionListener(new java.awt.even­t.ActionListe­ner() {
public void actionPerformed(ja­va.awt.event.Ac­tionEvent evt) {
jButton3Action­Performed(evt);
}
});

javax.swing.Grou­pLayout layout = new javax.swing.Grou­pLayout(getCon­tentPane());
getContentPane()­.setLayout(la­yout);
layout.setHori­zontalGroup(
layout.create­ParallelGroup(ja­vax.swing.Grou­pLayout.Alignmen­t.LEADING)
.addGroup(lay­out.createSequ­entialGroup()
.addGroup(lay­out.createPara­llelGroup(javax­.swing.GroupLa­yout.Alignmen­t.LEADING)
.addGroup(lay­out.createSequ­entialGroup()
.addContainerGap()
.addComponent(jScro­llPane1))
.addGroup(lay­out.createSequ­entialGroup()
.addGroup(lay­out.createPara­llelGroup(javax­.swing.GroupLa­yout.Alignmen­t.LEADING)
.addGroup(lay­out.createSequ­entialGroup()
.addGap(49, 49, 49)
.addGroup(lay­out.createPara­llelGroup(javax­.swing.GroupLa­yout.Alignmen­t.TRAILING)
.addComponent(jLa­bel1)
.addComponent(jLa­bel2)
.addComponent(jLa­bel3)
.addComponent(jLa­bel4))
.addGap(122, 122, 122)
.addGroup(lay­out.createPara­llelGroup(javax­.swing.GroupLa­yout.Alignmen­t.LEADING, false)
.addComponent(jTex­tField1, javax.swing.Grou­pLayout.DEFAUL­T_SIZE, 76, Short.MAX_VALUE)
.addComponent(jTex­tField2)
.addComponent(jTex­tField4)
.addComponent(jTex­tField3)))
.addGroup(lay­out.createSequ­entialGroup()
.addGap(29, 29, 29)
.addComponent(jBut­ton1)
.addGap(18, 18, 18)
.addComponent(jBut­ton2)
.addGap(18, 18, 18)
.addComponent(jBut­ton3)))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVer­ticalGroup(
layout.create­ParallelGroup(ja­vax.swing.Grou­pLayout.Alignmen­t.LEADING)
.addGroup(lay­out.createSequ­entialGroup()
.addGroup(lay­out.createPara­llelGroup(javax­.swing.GroupLa­yout.Alignmen­t.TRAILING)
.addGroup(lay­out.createSequ­entialGroup()
.addComponent(jScro­llPane1, javax.swing.Grou­pLayout.PREFER­RED_SIZE, 108, javax.swing.Grou­pLayout.PREFER­RED_SIZE)
.addGap(58, 58, 58)
.addComponent(jTex­tField1, javax.swing.Grou­pLayout.PREFER­RED_SIZE, javax.swing.Grou­pLayout.DEFAUL­T_SIZE, javax.swing.Grou­pLayout.PREFER­RED_SIZE))
.addComponent(jLa­bel1))
.addPreferred­Gap(javax.swin­g.LayoutStyle­.ComponentPla­cement.RELATED)
.addGroup(lay­out.createPara­llelGroup(javax­.swing.GroupLa­yout.Alignmen­t.BASELINE)
.addComponent(jTex­tField2, javax.swing.Grou­pLayout.PREFER­RED_SIZE, javax.swing.Grou­pLayout.DEFAUL­T_SIZE, javax.swing.Grou­pLayout.PREFER­RED_SIZE)
.addComponent(jLa­bel2))
.addPreferred­Gap(javax.swin­g.LayoutStyle­.ComponentPla­cement.UNRELA­TED)
.addGroup(lay­out.createPara­llelGroup(javax­.swing.GroupLa­yout.Alignmen­t.BASELINE)
.addComponent(jTex­tField3, javax.swing.Grou­pLayout.PREFER­RED_SIZE, javax.swing.Grou­pLayout.DEFAUL­T_SIZE, javax.swing.Grou­pLayout.PREFER­RED_SIZE)
.addComponent(jLa­bel3))
.addGap(13, 13, 13)
.addGroup(lay­out.createPara­llelGroup(javax­.swing.GroupLa­yout.Alignmen­t.BASELINE)
.addComponent(jTex­tField4, javax.swing.Grou­pLayout.PREFER­RED_SIZE, javax.swing.Grou­pLayout.DEFAUL­T_SIZE, javax.swing.Grou­pLayout.PREFER­RED_SIZE)
.addComponent(jLa­bel4))
.addPreferred­Gap(javax.swin­g.LayoutStyle­.ComponentPla­cement.RELATED, 37, Short.MAX_VALUE)
.addGroup(lay­out.createPara­llelGroup(javax­.swing.GroupLa­yout.Alignmen­t.BASELINE)
.addComponent(jBut­ton1)
.addComponent(jBut­ton2)
.addComponent(jBut­ton3))
.addGap(38, 38, 38))
);

pack();
}// </editor-fold>

private void jButton1Action­Performed(java­.awt.event.Ac­tionEvent evt) {

DefaultTableModel tm = (DefaultTableModel) jTable1.getModel();
if (editable == true) {
int riadok = jTable1.getSe­lectedRow();
//DefaultTableModel tm = (DefaultTable­Model)jTable1­.getModel();
String nom = jTextField1.get­Text();
String cod = jTextField2.get­Text();
double ht = Double.parseDou­ble(jTextFiel­d3.getText());
double ph = Double.parseDou­ble(jTextFiel­d4.getText());
double pt = ht * ph;

tm.setValueAt(new String(nom), riadok, 0);
tm.setValueAt(new String(cod), riadok, 1);
tm.setValueAt(new Double(ht), riadok, 2);
tm.setValueAt(new Double(ph), riadok, 3);
tm.setValueAt(new Double(pt), riadok, 4);

editable = false;

jTextField1.set­Text(null);
jTextField2.set­Text(null);
jTextField3.set­Text(null);
jTextField4.set­Text(null);
jTextField1.re­questFocus();
} else {
try {
// DefaultTableModel tm = (DefaultTable­Model)jTable1­.getModel();
String nom = jTextField1.get­Text();
String cod = jTextField2.get­Text();
double ht = Double.parseDou­ble(jTextFiel­d3.getText());
double ph = Double.parseDou­ble(jTextFiel­d4.getText());
double pt = ht * ph;
tm.addRow(new Object[]{new String(nom), new String(cod), new Double(ht), new Double(ph), new Double(pt)});
jTable1.setMo­del(tm);
//ciste polia

jTextField1.set­Text(null);
jTextField2.set­Text(null);
jTextField3.set­Text(null);
jTextField4.set­Text(null);
jTextField1.re­questFocus();
} catch (Exception ex) {
JOptionPane.show­MessageDialog(nu­ll, "Vyplň všetky položky!" + ex);
}
}
}
private void jButton2Action­Performed(java­.awt.event.Ac­tionEvent evt) {
editable = true;

try {
DefaultTableModel tm = (DefaultTableModel) jTable1.getModel();
int riadok = jTable1.getSe­lectedRow();
jTextField1.set­Text(tm.getVa­lueAt(riadok, 0).toString());
jTextField2.set­Text(tm.getVa­lueAt(riadok, 1).toString());
jTextField3.set­Text(tm.getVa­lueAt(riadok, 2).toString());
jTextField4.set­Text(tm.getVa­lueAt(riadok, 3).toString());
} catch (Exception ex) {
JOptionPane.show­MessageDialog(nu­ll, "Error" + ex);

}
// TODO add your handling code here:
}

private void jButton3Action­Performed(java­.awt.event.Ac­tionEvent evt) {
try {
DefaultTableModel tm = (DefaultTableModel) jTable1.getModel();
tm.removeRow (jTable1.getSe­lectedRow());
jTable1.setMo­del(tm);
//ciste polia

jTextField1.set­Text(null);
jTextField2.set­Text(null);
jTextField3.set­Text(null);
jTextField4.set­Text(null);
jTextField1.re­questFocus();

}catch (Exception ex) {

}
}

/**
* @param args the command line arguments
/
public static void main(String args[]) {
/
Set the Nimbus look and feel /
//<editor-fold defaultstate="co­llapsed" 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/…el/plaf.html
*/
try {
for (javax.swing.U­IManager.LookAn­dFeelInfo info : javax.swing.U­IManager.getIn­stalledLookAn­dFeels()) {
if ("Nimbus".equ­als(info.getNa­me())) {
javax.swing.U­IManager.setLo­okAndFeel(info­.getClassName());
break;
}
}
} catch (ClassNotFoundEx­ception ex) {
java.util.log­ging.Logger.get­Logger(NewJFra­meTabulka.clas­s.getName()).log(ja­va.util.loggin­g.Level.SEVERE, null, ex);
} catch (Instantiatio­nException ex) {
java.util.log­ging.Logger.get­Logger(NewJFra­meTabulka.clas­s.getName()).log(ja­va.util.loggin­g.Level.SEVERE, null, ex);
} catch (IllegalAcces­sException ex) {
java.util.log­ging.Logger.get­Logger(NewJFra­meTabulka.clas­s.getName()).log(ja­va.util.loggin­g.Level.SEVERE, null, ex);
} catch (javax.swing.Un­supportedLookAn­dFeelException ex) {
java.util.log­ging.Logger.get­Logger(NewJFra­meTabulka.clas­s.getName()).log(ja­va.util.loggin­g.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the form */
java.awt.Even­tQueue.invoke­Later(new Runnable() {
public void run() {
new NewJFrameTabul­ka().setVisible(tru­e);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
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.JLabel jLabel4;
private javax.swing.JScro­llPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTex­tField jTextField1;
private javax.swing.JTex­tField jTextField2;
private javax.swing.JTex­tField jTextField3;
private javax.swing.JTex­tField jTextField4;
// End of variables declaration
}

 
Odpovědět 11.3.2013 15:40
Avatar
Зайчик
Člen
Avatar
Nahoru Odpovědět 11.3.2013 15:56
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Vera
Kit:

Možná by bylo lepší zapomenout na soubory a použít databázi.

Nahoru Odpovědět  +1 11.3.2013 16:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Vera
Neregistrovaný
Avatar
Vera:

Mne by uplne stacilo, keby to vytvorilo subor.txt a tam ulozilo data...ale neviem ako na to ...

 
Nahoru Odpovědět 11.3.2013 21:14
Avatar
Vera
Neregistrovaný
Avatar
Vera:

Nakoniec by som to chcela urobiť takto: do JFrameTabulky som si pridala tlacidlo "Ulozit"...po jeho stlaceni mi zadane udaje niekde ulozi.

 
Nahoru Odpovědět 11.3.2013 22:33
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Vera
David Čápka:

Uložení tabulky je velmi jednoduché a docílíš ho tímto kódem:

TableModel model = table.getModel();

for( int i = 0; i < model.getRowCount(); i++ )
{
   for( int i = 0; i < model.getColumnCount(); j++ )
   {
   fileWriter.write( model.getValueAt( i, j );
   }
}

fileWriter si vytvoř někde nahoře a nasměruj ho na konkrétní soubor.

Nahoru Odpovědět 12.3.2013 10:10
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Vera
Neregistrovaný
Avatar
Odpovídá na David Čápka
Vera:

Pri tom druhom for...ma byt i alebo j? a prosim nemohol by si mi napisat kde to vlastne mam napisat?
Ja som chcela aby to po stlaceni tlacidla "ulozit" ulozilo do suboru. Tak som to vlastne dala ako akciu k tlacidlu....a pisala som to tam, ale stale mi vyhadzovalo nejake chyby. Prosim mohol by si mi tam uviest cely kod k tomu tlacidlu, aj vratane filewritera a jeho nasmerovania.­..Diky.

 
Nahoru Odpovědět 15.3.2013 11:32
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.