Quiero crear una sencilla aplicación independiente que se llevará a algunos de entrada de usuario (algunos números y matemáticos de las funciones f(x,y…)) y escribirlos en un archivo. Luego, con la ayuda de este archivo que voy a ejecutar un comando.

Ingredientes básicos que necesito:

— JTextArea para la entrada de los usuarios.

— ButtonHandler/ActionListener y la escritura de la entrada a un (txt) archivo

— ButtonHandler/ActionLister para ejecutar un comando

¿Cuál es la mejor manera de hacerlo?

Actual se ejecuta el código que tengo (básicamente un juguete) – que no escribe nada, simplemente ejecuta – es:

import java.applet.*;
import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Dialog;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.util.*;
import java.io.BufferedWriter;
public class Runcommand3
{
public static void main(String[] args) throws FileNotFoundException, IOException
{
//JApplet applet = new JApplet();
//applet.init();
final JFrame frame = new JFrame("Change Backlight");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(null);
frame.add(panel);
JButton button = new JButton("Click me to Run");
button.setBounds(55,100,160,30);
panel.add(button);
frame.setSize(260,180);
frame.setVisible(true);
//This is an Action Listener which reacts to clicking on the button
button.addActionListener(new ButtonHandler());
}
}
class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent event){
double value = Double.parseDouble(
JOptionPane.showInputDialog("please enter backlight value"));
//File theFile = new File("thisfile.txt");
//theFile.write(value);
String command = "xbacklight -set " + value;
try{Runtime run = Runtime.getRuntime();
Process pr = run.exec(command);}
catch(IOException t){t.printStackTrace();}
}
}

En el ejemplo de arriba ¿cómo puedo escribir «valor» a un archivo? Entonces, ¿cómo puedo añadir más de entrada (más campos de texto)? Puedo hacerlo en la misma clase o necesito más?
Mi confusión viene (principalmente, pero no sólo por el hecho de que en el interior de la ButtonHandler de clase I NO se puede definir cualquier otro tipo de objetos (es decir, abrir y escribir archivos, etc).

  • Cómo leer datos de entrada del usuario en Java y escribir en un archivo, fue exactamente tu pregunta, no hacer otra pregunta que no está relacionada con su pregunta, pregunte en otra pregunta.
  • ¿Por qué el unaccept?
  • No estoy seguro de cómo se supone que voy a usar el botón de aceptar, pero mi pregunta no está resuelto y no quiero que aparezca como ‘resuelto’.
InformationsquelleAutor mario go | 2013-08-06

2 Comentarios

  1. 3

    Esta es la forma en que yo iba a escribir a un archivo. Yo te permitirá convertir este código en tu interfaz gráfica de usuario para la práctica. Ver más sobre BufferedWriter y FileWriter

    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.util.Scanner;
    public class Files {
    public static void main(String args[]){
    System.out.print("Enter Text: ");
    Scanner scan = new Scanner(System.in);
    String text = scan.nextLine();
    FileWriter fWriter = null;
    BufferedWriter writer = null;
    try {
    fWriter = new FileWriter("text.txt");
    writer = new BufferedWriter(fWriter);
    writer.write(text);
    writer.newLine();
    writer.close();
    System.err.println("Your input of " + text.length() + " characters was saved.");
    } catch (Exception e) {
    System.out.println("Error!");
    }
    }
    }
    • Gracias, pero no me queda claro cómo incorporarlo a mi GUI código y cómo combinarlo con ActionListener. El problema sigue siendo: no puedo pasar una variable de una clase (público) a la otra (ButtonHandler).
    • Uso global variables y, a continuación, configurar y utilizar en su acción de escucha.
  2. 1

    Para tu segunda pregunta, usted puede considerar la posibilidad de tener un JTextField en el JFrame para que el usuario introduzca líneas en lugar de un JOptionPane. Es sólo un simple cuadro de texto, y usted puede agregar el cuadro de contenidos del archivo cada vez que se pulsa el botón:

    public static void main(String[] args) {
    JTextField myTextField = new JTextField();
    //Your code, set size and position of textfield
    panel.add(myTextField);
    }
    class ButtonHandler implements ActionListener {
    public void actionPerformed(ActionEvent event) {
    String text = myTextField.getText();
    myTextField.setText("");
    new BufferedWriter(new FileWriter("text.txt")).write(text).newLine().close();
    //the rest of your code
    }
    }
    • Gracias por la ayuda pero me sale el mensaje de error de que no encuentra el myTextField variable. Yo lo he probado antes, por alguna razón (que no me comprenden) las variables definidas en la clase pública no son reconocidos en el ButtonHandler clase.

Dejar respuesta

Please enter your comment!
Please enter your name here