Effettivamente hai ragione, quel che mi occorre ora è fare un pò di pratica... Dopo essermi documentato un pò ho prodotto questo (sempre "lavorando" sul tuo):
codice:
CODICE C:
#include <stdio.h>
main ()
{
char nome[100], cognome[100];
int age;
scanf("%s", nome);
scanf("%s", cognome);
scanf("%d", &age);
printf("%s\n", nome);
printf("%s\n", cognome);
printf("%d\n", age);
}
CODICE JAVA:
import java.awt.BorderLayout;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class TalkWithC extends JPanel implements ActionListener
{
private JTextField testo;
private JTextField testo2;
private JTextField testo3;
private JLabel lab;
private JLabel lab2;
private JLabel lab3;
private JButton bottone;
private JTextArea output;
private JPanel up;
/** Creates a new instance of TalkWithC */
public TalkWithC()
{
super();
this.setLayout(new BorderLayout());
up = new JPanel();
testo = new JTextField(10);
testo2 = new JTextField(10);
testo3 = new JTextField(10);
lab = new JLabel("Nome");
lab2 = new JLabel("Cognome");
lab3 = new JLabel("Eta");
bottone = new JButton("Test");
bottone.addActionListener(this);
output = new JTextArea("Output: \n");
output.setEditable(false);
output.setRows(10);
up.add(lab);
up.add(testo);
up.add(lab2);
up.add(testo2);
up.add(lab3);
up.add(testo3);
up.add(bottone);
this.add(up, BorderLayout.NORTH);
this.add(output, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e)
{
Runtime r = Runtime.getRuntime();
Process p;
try
{
p = r.exec("C:\\Documents and Settings\\Ida\\Desktop\\Nuo\\prova.exe");
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
PrintWriter writer = new PrintWriter(new OutputStreamWriter(p.getOutputStream()));
writer.write(testo.getText() + "\n");
writer.write(testo2.getText() + "\n");
writer.write(testo3.getText() + "\n");
writer.flush();
String line;
while((line = reader.readLine()) != null)
{
output.append(line+"\n");
}
reader.close();
int status = p.exitValue();
} catch(Exception ex)
{
ex.printStackTrace();
}
}
}
che funziona esattamente come dovrebbe (pur non servendo a nulla...).
Solo due considerazioni:
1) secondo te è corretto acquisire anche l'eta (quindi un valore numerico) con getText (quindi come stringa...)? C'è un modo migliore? Secondo me non è molto corretto, ma poi ho visto (modificando il main.c) che in realtà il valore acquisito viene trattato proprio come un intero, quindi no problemm (almeno credo...)
2) se le 3 TextField le volessi disporre una sotto l'altra e non una dopo l'altra come dovrei fare?
Grazie