quoi de neuf les gars. J'ai un problème ici. Le fichier est en cours d'exécution mais il y a des erreurs logiques. J'ai connecté mon application Android à cette application Java. J'essaie d'envoyer plusieurs messages dans une liste d'un JFrame, ça se voit, mais ça ne se voit pas pendant que le JFrame est en cours d'exécution. Il va comme ceciMon JFrame apparaît après l'exécution d'une boucle "while". Je veux que le JFrame montre pendant qu'il fonctionne
(Jframe TOUJOURS PAS AFFICHE) je me connecte à java app
(Jframe TOUJOURS PAS AFFICHE) Envoyer des messages, il montre en println Puis après je ferme mon application Android
JFrame s'affiche à partir de l'application java avec les messages que j'ai envoyés (les messages sont stockés dans un JList)
Je veux que ce soit comme si le JFrame est affiché, je veux ajouter les valeurs dans Jlist. S'il vous plaît voir ce code. Ceci est le code im en utilisant
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.JList;
public class frmTestList extends JFrame {
public static final int portNumber = 60123;
private JPanel contentPane;
static String data;
static DefaultListModel model = new DefaultListModel();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
frmTestList frame = new frmTestList();
frame.setVisible(true);
try {
ServerSocket serverSocket = null;
serverSocket = new ServerSocket(portNumber);
Socket socket = serverSocket.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while((data = br.readLine()) != null){
System.out.println("Message from the client: " + data);
model.addElement(data);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public frmTestList() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JList list = new JList(model);
contentPane.add(list, BorderLayout.CENTER);
}
}
code Android:
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class MainActivity extends Activity {
Socket socket = null;
public String debuggingString = "DEBUG";
public String hostname = ""; // <-- my ipv4 is here
public int portNumber = 60123;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread() {
@Override
public void run() {
try {
//connecting
Log.e(debuggingString, "Attempting to connect to server");
socket = new Socket(hostname, portNumber);
//Send message to server
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write("this is a message from the client");
bw.newLine();
bw.flush();
//Receive message from server
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("Message from server: " + br.readLine());
} catch (
Exception e
)
{
Log.e(debuggingString, e.getMessage());
}
}
}.start();
}
;
public void sendMessage(View v) {
EditText editText = (EditText) findViewById(R.id.editText);
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write(editText.getText().toString());
bw.newLine();
bw.flush();
} catch (Exception e) {
Log.e(debuggingString, e.getMessage());
}
}
}
Merci à l'avance les gars!
Note latérale: ClassNames vont UpperCase en Java. Donc, frmTestList est simplement un mauvais nom! – GhostCat
Astuce: s'il vous plaît laissez-nous savoir si ma simple suggestion a déjà fonctionné. – GhostCat
Merci pour la note de côté, @GhostCat. Mais la solution que vous avez suggérée ne fonctionne toujours pas. – NewbieProgrammer