NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Pomoc u JTable.

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Kamil Vavřička:14.6.2015 16:05

Potřeboval bych trochu vysvětlit tu metodu load. Byl by někdo tak hodnej a okomentoval mi průběh? Co co dělá atak, jen u toho loadu, ostatní vím? Dělali jsme to ve škole, ale máme učitele co to nedokáže vysvětlit. Díky moc, jestli mi někdo pomůže.

import java.awt.BorderLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Scanner;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author User
 */
public class JTableExample extends JFrame{ // odkazy na promenou
JTable table;
JScrollPane pane;
DefaultTableModel dtm;
JPanel controler;
JButton load;
Vector<String> jm;
Vector<Vector<String>> dat;

  public JTableExample() throws HeadlessException {
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setTitle("JTable");
  setSize(200, 300);
  nastavControler();
  generateTable();

  }
  private void nastavControler(){
   jm=new Vector<>();
   dat=new Vector<>();
    controler=new JPanel();
   load=new JButton("Load");
   load.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        load();
      }
    });
   controler.add(load);
   add(controler, BorderLayout.NORTH);
  }
  private void load(){
    try {
      jm.clear();
      dat.clear();

      Scanner soubor=new Scanner(new File("dat.txt"));
      for (int i=0;soubor.hasNextLine();i++) {
        String line = soubor.nextLine();
        if (i==0) {
           Scanner data = new Scanner(line);
           while (data.hasNext()) {
           String polozka =data.next();
           jm.add(polozka);
          }

        } else {
          Scanner data = new Scanner(line);
          Vector<String> pomcJRP=new Vector<>();
          while (data.hasNext()) {
            String datPol = data.next();
          pomcJRP.add(datPol);
          }
          dat.add(pomcJRP);
        }

      }
      dtm=new DefaultTableModel(dat, jm);
      table.setModel(dtm);

    } catch (Exception e) {
      System.out.println("nejde load");
      JOptionPane.showMessageDialog(controler, "Nejde load");
    }

  }
 
Odpovědět
14.6.2015 16:05
Avatar
Rasto
Tvůrce
Avatar
Odpovídá na Kamil Vavřička
Rasto:15.7.2015 9:41

Ahoj,
v metode load() pomocou Scannera citas subor. Ak to spravne chapem, tak prvyt riadok suboru sa nacita tak, ze sa pomocou dalsieho Scanner objektu (data), nacitaju jednotlive slova zo suboru do Vectora jm.

Za else { sa potom citaju dalsie riadky zo subora, kde sa opat do Scanner objektu data ukladaju riadky, ktore sa rozkladaju na slova a tie sa ukladaju do Vectora pomcJRP. Tento Vector sa nasledne vlozi do Vectora dat.

Vectory dat a jm sa pouziju pre vytvorenie DefaultTableModel objektu, ktory sa potom urci ako platny model pre JTable table. Jednotlive polozky z Vectora dat su datami v novej tabulke a polozky z Vectora jm vytvoria hlavicku tabulky

 
Nahoru Odpovědět
15.7.2015 9:41
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 2 zpráv z 2.