Nie potrafię użyć tekstu z pola tekstowego

0

http://wklej.to/Xe2OM

Nie potrafię użyć tego

public void kopiowanie(){
    System.out.println(sciezka);
    Path source = Paths.get("d:\\gyld.png");
    Path target1 = Paths.get("e:\\gyld.png");

    try
    {
        Files.copy(source, target1, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.COPY_ATTRIBUTES);
    }
    catch (IOException e) 
    {
        e.printStackTrace();
    }
}

Chodzi o to aby po wpisaniu ścieżek do pól tekstowych następowało kopiowanie pliku z source do target1.

dodanie wcięć w kodzie - fp

0

Ale tu nie ma żadnych pól tekstowych.

0

Tak to jest jak się używa kopiuj- wklej a później się nie rozumie kodu.. :)

0
bakeraw2 napisał(a):

Tak to jest jak się używa kopiuj- wklej a później się nie rozumie kodu.. :)

Ależ Pan pomocny.Robiłem to według poradników lecz utknąłem w tym punkcie.

0

Ale Ty tam nie w swoim kodzie nie masz pól tekstowych więc jak chcesz to zrobić? Najpierw pokaż kod w którym masz pole tekstowe, ponieważ jak na razie nie wiem w czym masz problem.

1

Dodaj przycisk inicjujący kopiowanie, albo do pól tekstowych dodaj KeyListenera i kopiuj po wypełnieniu obu pól i naciśnięciu ENTER.

0
bakeraw2 napisał(a):

Ale Ty tam nie w swoim kodzie nie masz pól tekstowych więc jak chcesz to zrobić? Najpierw pokaż kod w którym masz pole tekstowe, ponieważ jak na razie nie wiem w czym masz problem.

http://wklej.to/Xe2OM

Wkleiłem w 1 poście ten link.

1

Tu masz implementacje na szybko:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

public class Frame extends JFrame {
    private JTextField sourceTF;
    private JTextField targetTF;

    public Frame() {
        setUpFrame();
        initializeComponents();
    }

    private void setUpFrame() {
        setSize(600, 300);
        setLocationRelativeTo(null);
    }

    private void initializeComponents() {
        sourceTF = new JTextField(15);
        targetTF = new JTextField(15);
        JButton copyBtn = new JButton("Kopiuj");
        copyBtn.addActionListener(new CopyBtnListener());

        JPanel panel = new JPanel();
        panel.add(sourceTF);
        panel.add(targetTF);
        panel.add(copyBtn);

        add(panel);
    }

    class CopyBtnListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            Path sourcePath = Paths.get(sourceTF.getText());
            Path targetPath = Paths.get(targetTF.getText());

            try {
                Files.copy(sourcePath,
                        targetPath,
                        StandardCopyOption.REPLACE_EXISTING,
                        StandardCopyOption.COPY_ATTRIBUTES);

                JOptionPane.showMessageDialog(null, "Skopiowano");
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }
}



import javax.swing.*;

public class Main {
    public static void main(String[] args) {
        Frame frame = new Frame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

0
import javax.swing.*;

public class Kopia {
    JFrame okno; //modyfikatory dostępu (public, private, ...) są w tym przypadku zbędne ponieważ
    JTextField tf, tf2; //cała aplikacja zawiera się w jednej klasie
    JLabel label1, label2;  // najlepiej zadeklarować komponenty w ciele klasy - nie metody
                            // tym bardziej przy bardziej rozbudowanych programach gdzie wymagany jest
                            // dostęp do elementów okna z poziomu różnych metod
    
    public Kopia(String tytul){ // do budowy okna można użyć konstruktora klasy, choć nie jest to konieczność
                                // można nawet budowę okna mieć w jednej metodzie, a jego wypełnienie
                                // różnymi komponentami w innej.
        okno = new JFrame();
        okno.setSize(300, 150);
        okno.setTitle(tytul);
        okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        okno.setResizable(true);
        okno.setLocationRelativeTo(null);
        okno.setLayout(null);
        
        label1 = new JLabel();
        label1.setText("Etykieta 1");
        label1.setBounds(20, 10, 260, 20);
        
        tf = new JTextField();
        // Poniższe pola można zastąpić jedną metodą setBounds
        // tf.setSize(300,00);
        // tf.setLocation(50,50); // pozycja pola tekstowego i jego rozmiar\
        tf.setBounds(20, 30, 260, 20);
        tf.setText(null); // pole jest puste
        tf.setToolTipText("Pole tekstowe 1");
        
        label2 = new JLabel();
        label2.setText("Etykieta 2");
        label2.setBounds(20, 60, 260, 20);
        
        tf2 = new JTextField();
        tf2.setBounds(20, 80, 260, 20);
        tf2.setText(null); // pole jest puste
        tf2.setToolTipText("Pole tekstowe 2");
        
        okno.add(label1);
        okno.add(tf);
        okno.add(label2);
        okno.add(tf2);
        
        okno.setIgnoreRepaint(false);   //dzięki tej metodzie (z wartością "false")
                                        //zawartość okna po zminimalizowaniu jest odświeżana
        okno.setVisible(true);  // najlepiej tą metodę umieścić na końcu konstruktora
                                //ładuje wtedy całą zawartość okna i nie trzeba używać poniższej metody
                                //do odświeżenia zawartości okna.
        // okno.repaint(); 
    }

    public static void main (String args[]) {
        new Kopia("Tytuł okna - dowolny...");
    }
}

Jeśli ktoś może to proszę dodać przycisk kopiuj lub aby kopiowało po naciśnięciu Enter-ja już tego nie ogarnę dzisiaj.

Tutaj jest kod do kopiowania

public void kopiowanie(){
Path source = Paths.get("d:\\gyld.png");
Path target1 = Paths.get("e:\\gyld.png");
try 
{
 
Files.copy(source, target1, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.COPY_ATTRIBUTES);
} 
catch (IOException e) 
{
e.printStackTrace();
}
}
}
1

Dodałem metodę do Twojego kodu, chociaż ja bym to napisał od nowa, czytelniej:

import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

public class Kopia {
    JFrame okno; //modyfikatory dostępu (public, private, ...) są w tym przypadku zbędne ponieważ
    JTextField tf, tf2; //cała aplikacja zawiera się w jednej klasie
    JLabel label1, label2;  // najlepiej zadeklarować komponenty w ciele klasy - nie metody
    // tym bardziej przy bardziej rozbudowanych programach gdzie wymagany jest
    // dostęp do elementów okna z poziomu różnych metod

    public Kopia(String tytul) { // do budowy okna można użyć konstruktora klasy, choć nie jest to konieczność
        // można nawet budowę okna mieć w jednej metodzie, a jego wypełnienie
        // różnymi komponentami w innej.
        okno = new JFrame();
        okno.setSize(300, 150);
        okno.setTitle(tytul);
        okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        okno.setResizable(true);
        okno.setLocationRelativeTo(null);
        okno.setLayout(null);

        label1 = new JLabel();
        label1.setText("Etykieta 1");
        label1.setBounds(20, 10, 260, 20);

        tf = new JTextField();
        // Poniższe pola można zastąpić jedną metodą setBounds
        // tf.setSize(300,00);
        // tf.setLocation(50,50); // pozycja pola tekstowego i jego rozmiar\
        tf.setBounds(20, 30, 260, 20);
        tf.setText(null); // pole jest puste
        tf.setToolTipText("Pole tekstowe 1");

        label2 = new JLabel();
        label2.setText("Etykieta 2");
        label2.setBounds(20, 60, 260, 20);

        tf2 = new JTextField();
        tf2.setBounds(20, 80, 260, 20);
        tf2.setText(null); // pole jest puste
        tf2.setToolTipText("Pole tekstowe 2");

        tf.addKeyListener(new KeyEnterListener());
        tf2.addKeyListener(new KeyEnterListener());

        okno.add(label1);
        okno.add(tf);
        okno.add(label2);
        okno.add(tf2);

        okno.setIgnoreRepaint(false);   //dzięki tej metodzie (z wartością "false")
        //zawartość okna po zminimalizowaniu jest odświeżana
        okno.setVisible(true);  // najlepiej tą metodę umieścić na końcu konstruktora
        //ładuje wtedy całą zawartość okna i nie trzeba używać poniższej metody
        //do odświeżenia zawartości okna.
        // okno.repaint();
    }

    class KeyEnterListener extends KeyAdapter {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                Path sourcePath = Paths.get(tf.getText());
                Path targetPath = Paths.get(tf2.getText());

                try {
                    Files.copy(sourcePath,
                            targetPath,
                            StandardCopyOption.REPLACE_EXISTING,
                            StandardCopyOption.COPY_ATTRIBUTES);

                    JOptionPane.showMessageDialog(null, "Skopiowano");
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
    }

    public static void main(String args[]) {
        new Kopia("Tytuł okna - dowolny...");
    }
}
1

Raczej tak

            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                if(tf.getText().isEmpty() || tf2.getText().isEmpty())
                {
                    return;
                }            
                Path sourcePath = Paths.get(tf.getText());
                Path targetPath = Paths.get(tf2.getText());
                try {
                    Files.copy(sourcePath,
                            targetPath,
                            StandardCopyOption.REPLACE_EXISTING,
                            StandardCopyOption.COPY_ATTRIBUTES);
 
                    JOptionPane.showMessageDialog(null, "Skopiowano");
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1