У меня есть основной класс с двумя подклассами, один для инициализации GUI и один для создания и функциональности сервера. У меня есть логическая переменная «connected», которая истинна, когда пользователь подключен к серверу, а false - нет. Как я могу обновить текст JTextPane в подклассе GUI из подкласса сервера, чтобы сказать, что «клиент подключен», когда «подключен» является истинным, а «нет соединения» при ложном?Изменение текста JTextPane при изменении логической переменной
главный класс:
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");
}
}
}
}
графический интерфейс класса (несущественные части удалены):
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
}
}
серверного класса (несущественные части удалены):
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
'если (подключен) {label.setText ("Connected"); } else {label.setText («Клиент не подключен») 'возможно (?) – Frakcool
В чем проблема? Доступ к экземпляру JTextPane? Настройка текста в нужное время? Добавление в JTextPane? Пожалуйста, будьте более конкретными, иначе мы можем просто догадаться. В идеале, пожалуйста, также покажите, что вы пробовали в [mcve]. –
Model-View-Controller – ControlAltDel