J'ai une classe principale avec deux sous-classes, une pour l'initialisation de l'interface graphique et une pour la création et la fonctionnalité du serveur. J'ai une variable booléenne 'connected', ce qui est vrai quand un utilisateur est connecté au serveur et false dans le cas contraire. Comment serais-je capable de mettre à jour le texte d'un JTextPane dans la sous-classe GUI de la sous-classe du serveur pour dire "client connecté" quand "connected" est vrai et "no connection" si false?Modification du texte JTextPane sur une variable booléenne
classe principale:
public class serverMain {
public static boolean allowConnections = false;
public static boolean connected = false;
public static boolean launchOnStart = false;
public static boolean loop = true;
public static int serverPort = 1234;
public static ServerSocket serverSocket;
public static void main(String args[]){
serverGUI.gui();
while (loop){
if (allowConnections == true){
serverCommands.commands();
}
else {
System.out.println("reject");
}
}
}
}
classe IUG (parties non pertinentes enlevés):
public class serverGUI extends serverMain {
public static JTextPane txtConnectionMarker;
public static void gui(){
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
serverGUI window = new serverGUI();
window.frmRemoteServer.setVisible(true);
}
catch (Exception e) {
e.printStackTrace();
}
}
});
}
public serverGUI() {
initialise();
}
public void initialise() {
frmRemoteServer = new JFrame();
frmRemoteServer.setBounds(100, 100, 720, 420);
frmRemoteServer.setResizable(false);
frmRemoteServer.setTitle("Remote Server");
frmRemoteServer.getContentPane().setBackground(Color.WHITE);
frmRemoteServer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmRemoteServer.getContentPane().setLayout(null);
JTextPane txtConnectionMarker = new JTextPane();
txtConnectionMarker.setEditable(false);
txtConnectionMarker.setBounds(548, 21, 149, 33);
txtConnectionMarker.setFont(new Font("Segoe UI Light", Font.BOLD, 16));
txtConnectionMarker.setBackground(SystemColor.menu);
frmRemoteServer.getContentPane().add(txtConnectionMarker);
if (connected == true){
txtConnectionMarker.setText("Connected");
txtConnectionMarker.setForeground(Color.GREEN);
}
else {
txtConnectionMarker.setText("No Connection");
txtConnectionMarker.setForeground(Color.RED);
}
// obviously this will not update as connected changes
}
}
classe serveur (parties non pertinentes supprimées):
public class serverCommands extends serverMain {
public static void commands() {
String input;
try {
serverSocket = new ServerSocket(serverPort);
System.out.println("socket opened on port "+serverPort);
Socket clientSocket = serverSocket.accept();
connected = true;
// there's more to all parts but the given code
// should be enough to get what I'm trying to do
// basically once the user disconnects connected
// will change back to false
'si (connecté) {label.setText ("Connected"); } else {label.setText ("Client non connecté)}' peut-être (?) – Frakcool
Quel est exactement le problème? Accéder à l'instance JTextPane? Définir le texte au bon moment? Ajouter au JTextPane? Veuillez être plus précis, sinon Nous pouvons simplement deviner Idéalement s'il vous plaît également montrer ce que vous avez essayé dans un [mcve] –
Model-View-Controller – ControlAltDel