kuinka Tiedosto/Avaa

löytyisikö apuja

eli Menubarin Tiedosto MenuItemsta Avaa pitäisi saada aikaisen tiedoston avaus toiminto (eli siis tuo mikä vaikkapa tuolla selaimesi vasemmassa ylänurkassa on). MIten sellainen tehdään? En löydä mistään

8

1122

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • aöksljdföakljsfd

      --- ESIMERKKI ALKAA ---

      import java.awt.*;
      import java.awt.event.*;
      import java.io.*;
      import javax.swing.*;


      public class Esimerkki extends JFrame implements ActionListener {
         
         public Esimerkki() {
            JMenuBar menubar = new JMenuBar();
            
            JMenu menu = menubar.add(new JMenu("Tiedosto"));
            menu.setMnemonic('T');
            
            JMenuItem menuitem = new JMenuItem("Avaa");
            menuitem.setActionCommand("avaa");
            menuitem.setMnemonic('A');   
            menu.add(menuitem);
         
            menuitem.addActionListener(this);
            
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            getContentPane().add(menubar, BorderLayout.NORTH);
            setSize(200, 100);
            
            setVisible(true);
         }
         
         public void actionPerformed(ActionEvent event) {
            if ("avaa".equals(event.getActionCommand())) {
               JFileChooser fc = new JFileChooser();
               if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
                  try {
                     FileReader fr = new FileReader(fc.getSelectedFile());
                     BufferedReader br = new BufferedReader(fr);
                  
                   String rivi;
                     while((rivi = br.readLine()) != null)
                        System.out.println(rivi);
                     
                     br.close();
                  } catch (IOException e) {
                     e.printStackTrace();
                  }
          }   
            }
         }

         
         public static void main(String[] args) {
            new Esimerkki();
         }
      }

      --- ESIMERKKI LOPPUU ---

      • tuosta oli hyvä ottaa osia ...

        Kiitoksia esimerkistä.

        Onko tuon JFileChooser kautta myös tallennus mahdollista?

        Olisiko hyvää linkkiä noihin aiheisiin, kun en itse ole vielä löytänyt sellaisia näppäriä esimerkkejä?


      • aöksljdföakljsfd
        tuosta oli hyvä ottaa osia ... kirjoitti:

        Kiitoksia esimerkistä.

        Onko tuon JFileChooser kautta myös tallennus mahdollista?

        Olisiko hyvää linkkiä noihin aiheisiin, kun en itse ole vielä löytänyt sellaisia näppäriä esimerkkejä?

        Tuo JFileChooser on vain se ikkuna jossa kysytään avattavan tai tallennettavaa tiedoston nimeä, eli se ei liity mitenkään itse tiedoston lukuun/tallentamiseen (eli avaamiseen, lukemineen, kirjoittamiseen, sulkeminen, jne.). Kun halutaan kysyä tallennettavaa tiedostoa, niin silloin kutsutaan "showOpenDialog" metodin sijasta vain "showSaveDialog" metodia. Alla olevassa linkissä on tieto ohjeita JFileChooserin käytöstä, (esim. miten saada se suodattamaan vain tietyt tiedostot listaan, .txt, jne.):

        http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html

        Tiedostojen käsittelyyn eli lukuun ja kirjoittamiseen, kannattaa etsiä esimerkkejä esim. hakusanoilla 'write read file java', tms. Esim. alla oleva linkki tuli vastaan:

        http://www.javapractices.com/topic/TopicAction.do?Id=42


      • aukaistulle tiedostolle

        Pitäisikö tuon avata valittu tiedosto?


      • aöksljdföakljsfd
        aukaistulle tiedostolle kirjoitti:

        Pitäisikö tuon avata valittu tiedosto?

        Se avaa valitun tiedoston lukua varten, ja sen jälkeen lukee sitä getLine komennolla rivi kerrallaan tulostaen samalla luetun rivin näytölle, (tai oikeastaan se tulostaa konsoliin, tai mihin sitten kullakin tuo System.out.println käskyn virta ohjautuu).

        Alla oleva rivi siinä pätkässä avaa tiedoston, lukua varten:

           FileReader fr = new FileReader(fc.getSelectedFile());

        Tiedoston käsittelyyn (avaus, luku/kirjoittaminen, sulkeminen, jne.) on monta erilaista tapaa ja vaihtoehtoa, tuo FileReader on vain yksi niistä.

        En tiedä mitä tarkoitat avaamiselle (eli käsitätkö, että se toisi jotain tekstiä näytölle tai ruutuun). Ohjelmoinnissa kuitenkin tiedoston avaamisella tarkoitetaan vain "näkymätöntä" toimenpidettä jossa tiedosto avataan lukua/kirjoitusta varten, jonka jälkeen ohjelma voi lukea tiedostosta merkkejä/rivejä ja esittää ne miten parhaaksi näkee.

        Tuota esimerkkiä siis kannattaa kokeilla teksti tiedostoon, ja pitää ohjelmaan liittyvä konsoli ikkuna auki, jos haluaa nähdä jotakin järkevää tulostusta.


      • sellainen että
        aöksljdföakljsfd kirjoitti:

        Se avaa valitun tiedoston lukua varten, ja sen jälkeen lukee sitä getLine komennolla rivi kerrallaan tulostaen samalla luetun rivin näytölle, (tai oikeastaan se tulostaa konsoliin, tai mihin sitten kullakin tuo System.out.println käskyn virta ohjautuu).

        Alla oleva rivi siinä pätkässä avaa tiedoston, lukua varten:

           FileReader fr = new FileReader(fc.getSelectedFile());

        Tiedoston käsittelyyn (avaus, luku/kirjoittaminen, sulkeminen, jne.) on monta erilaista tapaa ja vaihtoehtoa, tuo FileReader on vain yksi niistä.

        En tiedä mitä tarkoitat avaamiselle (eli käsitätkö, että se toisi jotain tekstiä näytölle tai ruutuun). Ohjelmoinnissa kuitenkin tiedoston avaamisella tarkoitetaan vain "näkymätöntä" toimenpidettä jossa tiedosto avataan lukua/kirjoitusta varten, jonka jälkeen ohjelma voi lukea tiedostosta merkkejä/rivejä ja esittää ne miten parhaaksi näkee.

        Tuota esimerkkiä siis kannattaa kokeilla teksti tiedostoon, ja pitää ohjelmaan liittyvä konsoli ikkuna auki, jos haluaa nähdä jotakin järkevää tulostusta.

        kun avaa esimerkiksi *.txt tiedoston niin se avautuisi vaikkapa Notepadilla (tai vastaavalla).


      • siihen samaan ikkunaan avat...
        aöksljdföakljsfd kirjoitti:

        Se avaa valitun tiedoston lukua varten, ja sen jälkeen lukee sitä getLine komennolla rivi kerrallaan tulostaen samalla luetun rivin näytölle, (tai oikeastaan se tulostaa konsoliin, tai mihin sitten kullakin tuo System.out.println käskyn virta ohjautuu).

        Alla oleva rivi siinä pätkässä avaa tiedoston, lukua varten:

           FileReader fr = new FileReader(fc.getSelectedFile());

        Tiedoston käsittelyyn (avaus, luku/kirjoittaminen, sulkeminen, jne.) on monta erilaista tapaa ja vaihtoehtoa, tuo FileReader on vain yksi niistä.

        En tiedä mitä tarkoitat avaamiselle (eli käsitätkö, että se toisi jotain tekstiä näytölle tai ruutuun). Ohjelmoinnissa kuitenkin tiedoston avaamisella tarkoitetaan vain "näkymätöntä" toimenpidettä jossa tiedosto avataan lukua/kirjoitusta varten, jonka jälkeen ohjelma voi lukea tiedostosta merkkejä/rivejä ja esittää ne miten parhaaksi näkee.

        Tuota esimerkkiä siis kannattaa kokeilla teksti tiedostoon, ja pitää ohjelmaan liittyvä konsoli ikkuna auki, jos haluaa nähdä jotakin järkevää tulostusta.

        tai vaikkapa tulostaa siihen samaan ikkunaan avatun tiedoston sisältö?

        Onko hankala toteuttaa?


      • aöksljdföakljsfd
        siihen samaan ikkunaan avat... kirjoitti:

        tai vaikkapa tulostaa siihen samaan ikkunaan avatun tiedoston sisältö?

        Onko hankala toteuttaa?

        Esimerkki miten valittu tiedosto ladataaan notepad ohjelmaan.

        --- ALKAA ---

        import java.awt.*;
        import java.awt.event.*;
        import java.io.*;
        import javax.swing.*;

        public class Esimerkki extends JFrame implements ActionListener {
           
           public Esimerkki() {
              super("Esimekki");
              
              JMenuBar menubar = new JMenuBar();
              
              JMenu menu = menubar.add(new JMenu("Tiedosto"));
              menu.setMnemonic('T');
              
              JMenuItem menuitem = new JMenuItem("Avaa");
              menuitem.setActionCommand("avaa");
              menuitem.setMnemonic('A');   
              menu.add(menuitem);
           
              menuitem.addActionListener(this);
              
              setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
              getContentPane().add(menubar, BorderLayout.NORTH);
              setSize(600, 400);
              
              setVisible(true);
           }
           
           public void actionPerformed(ActionEvent event) {
              if ("avaa".equals(event.getActionCommand())) {      
                 JFileChooser fc = new JFileChooser();
                 if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
                    try {
                       Runtime.getRuntime().exec(
                             "notepad \"" fc.getSelectedFile().getAbsolutePath() "\""
                       );
                    } catch (IOException e) {
                       e.printStackTrace();
                    }
            }
              }
           }
           
           public static void main(String[] args) {
              new Esimerkki();
           }
        }

        ---- LOPPUU ----




        Hieman keskeneräinen esimerkki (toimii kuitenkin jotenkin) siitä miten tiedoston rivin ladataan ikkunassa olevaan teksti kenttään:

        --- LOPPUU ---

        import java.awt.*;
        import java.awt.event.*;
        import java.io.*;
        import javax.swing.*;
        import javax.swing.text.*;

        public class Esimerkki extends JFrame implements ActionListener {
           
           StyledDocument doc;
           
           public Esimerkki() {
              super("Esimekki");
              
              JMenuBar menubar = new JMenuBar();
              
              JMenu menu = menubar.add(new JMenu("Tiedosto"));
              menu.setMnemonic('T');
              
              JMenuItem menuitem = new JMenuItem("Avaa");
              menuitem.setActionCommand("avaa");
              menuitem.setMnemonic('A');   
              menu.add(menuitem);
           
              menuitem.addActionListener(this);
              
              setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
              getContentPane().add(menubar, BorderLayout.NORTH);
              setSize(600, 400);
              
              JTextPane editorPane = new JTextPane();
              editorPane.setEditable(true);
              JScrollPane scrollPane = new JScrollPane(editorPane);
              doc = editorPane.getStyledDocument();
              scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
              add(scrollPane, BorderLayout.CENTER);
              
              setVisible(true);
           }
           
           public void actionPerformed(ActionEvent event) {
              if ("avaa".equals(event.getActionCommand())) {      
                 JFileChooser fc = new JFileChooser();
                 if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
                    try {
                       FileReader fr = new FileReader(fc.getSelectedFile());
                       BufferedReader br = new BufferedReader(fr);
                     String rivi;
                       while((rivi = br.readLine()) != null)
                          try {
                             doc.insertString(doc.getLength(), rivi "\n", doc.getStyle(""));
                          } catch (BadLocationException e) {
                             e.printStackTrace();
                          }
                       br.close();
                    } catch (IOException e) {
                       e.printStackTrace();
                    }
                    repaint();
            }
              }
           }
           
           public static void main(String[] args) {
              new Esimerkki();
           }
        }

        --- LOPPUU ---


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Ja taas ammuttu kokkolassa

      Kokkolaisilta pitäisi kerätä pois kaikki ampumaset, keittiöveitset ja kaikki mikä vähänkään paukku ja on terävä.
      Kokkola
      30
      3521
    2. Kukka ampu taas Kokkolassa?

      T. olisi hetkeä aiemmin lähtenyt johonkin. Naapuri kai tekijä J.K., ei paljasjalkainen Kokkolalainen, vaan n. 100km pääs
      Kokkola
      9
      1578
    3. Kuinka kauan

      Olet ollut kaivattuusi ihastunut/rakastunut? Tajusitko tunteesi heti, vai syventyivätkö ne hitaasti?
      Ikävä
      113
      1483
    4. Milli-helenalla ongelmia

      Suomen virkavallan kanssa. Eipä ole ihme kun on etsintäkuullutettu jenkkilässäkin. Vähiin käy oleskelupaikat virottarell
      Kotimaiset julkkisjuorut
      224
      1275
    5. Kun näen sinut

      tulen iloiseksi. Tuskin uskallan katsoa sinua, herätät minussa niin paljon tunteita. En tunne sinua hyvin, mutta jotain
      Ikävä
      34
      893
    6. Purra saksii taas. Hän on mielipuuhassaan.

      Nyt hän leikkaa hyvinvointialueiltamme kymmeniä miljoonia. Sotea romutetaan tylysti. Terveydenhoitoamme kurjistetaan. ht
      Maailman menoa
      242
      893
    7. Yhdelle miehelle

      Mä kaipaan sua niin paljon. Miksi sä oot tommonen pösilö?
      Ikävä
      60
      879
    8. Helena Koivu on äiti

      Mitä hyötyä on Mikko Koivulla kohdella LASTENSA äitiä huonosti . Vie lapset tutuista ympyröistä pois . Lasten kodista.
      Kotimaiset julkkisjuorut
      131
      879
    9. Ja taas kerran hallinto-oikeus että pieleen meni

      Hallinto-oikeus kumosi kunnanhallituksen päätöksen vuokratalojen pääomituksesta. https://sysmad10.oncloudos.com/cgi/DREQ
      Sysmä
      66
      854
    10. Löydänköhän koskaan

      Sunlaista herkkää tunteellista joka jumaloi mua. Tuskin. Siksi harmittaa että asiat meni näin 🥲
      Ikävä
      98
      819
    Aihe