Ahoj
Jsem ve třetáku a na cvičení programování z Javy jsem dostal učitele, co přeskočil uplně rok vyučování. Děláme GUI a diví se, že většina třídy to nechápe, protože nemáme na čem stavět. Zkrátka...nemám problém se to naučit (potřeboval bych ještě pár dnů abych lépe pochopil VV-proudy a vyjímky atd.), ale zítra píšeme "motivační písemku" (opravná na tu, ž čeho má 96% třídy za 5).
Program (JFrame Form...) funguje tak, že načte textovej soubor pomocí tlačítka "Load", text zobrazí do textového pole, kde se dá editovat a zeditovanej text se dá zase někam uložit pomocí tlačítka "Save".
Děláme v Netbeansu, takže polovina věcí za nás dělá Designer. V designeru nahážeme tlačítka (JButton) a textové pole (JTextArea a JScrollPane). V designeru ještě přiřádíme ke každému objektu události (Events-ActionPerformed-metody akceSave a akceLoad). Takže v source máme vygenerovanej nezměnitelnej kod popisujicí GUI a zbývá prostě popsat ty tlačítka a pole co mají dělat.
A v tom je ten problém. Napsat to umím (chápu základy OOP-třídy a objekty, takže souvislosti OK), ale rozumím tomu tak z poloviny a potřeboval bych, kdyby mi to někdo vysvětlil.
Nechci všechno, jen bych rád lépe pochopil co dělaj třídy JFileChooser, FileReader, BufferedReader, BufferedWriter v metodách akceSave(), akceLoad() a hlavně co to je ta moje vytvořená metoda inc().
Kód:package Test01; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import javax.swing.JFileChooser; public class JFrame extends javax.swing.JFrame { private JFileChooser jf; private javax.swing.JButton save; public JFrame() { initComponents(); inc(); } private void inc() { jf = new JFileChooser("C:\\Users"); save = new javax.swing.JButton(); save.setText("Save"); save.setBounds(10, 40, 80, 50); save.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { akceSave(evt); } }); getContentPane().add(save); } //GENEROVANEJ KOD @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { load = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Text Editor"); load.setText("Load"); load.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { akceLoad(evt); } }); jTextArea1.setColumns(20); jTextArea1.setRows(5); jScrollPane1.setViewportView(jTextArea1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(614, Short.MAX_VALUE) .addComponent(load) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addGap(127, 127, 127) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 481, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(71, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(26, 26, 26) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 308, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(load) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents //KONEC GENEROVANEJ KOD private void akceLoad(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_akceLoad try { jf.showOpenDialog(this.load); BufferedReader br = new BufferedReader(new FileReader(jf.getSelectedFile())); String text = ""; String linka; while ((linka = br.readLine()) != null) { System.out.println(""+linka); jTextArea1.append(linka); } } catch (Exception e) { System.out.println("Nelze load: " + e); } }//GEN-LAST:event_akceLoad private void akceSave(java.awt.event.ActionEvent evt) { try { jf.showSaveDialog(this.save); BufferedWriter bw = new BufferedWriter(new FileWriter(jf.getSelectedFile())); jTextArea1.write(bw); } catch (Exception e) { System.out.println("Nelze save: " + e); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new JFrame().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jTextArea1; private javax.swing.JButton load; // End of variables declaration//GEN-END:variables }




Odpověď s citací