Программа чата RMI, нужно красное сообщение об ошибке - PullRequest
0 голосов
/ 06 января 2012
public String commando(String username, String channel, String text) throws RemoteException{
        String[] result = text.split(" ", 3);
        if(result[0].equalsIgnoreCase("/join")){
            channel = result[1];
            setChannel(channel);
            joinChannel(username, channel);
        }
        else if(result[0].equalsIgnoreCase("/leave")){
            channel = result[1];
            setChannel(channel);
            leaveChannel(username, channel);
        }
        else if(result[0].equalsIgnoreCase("/whisper")){
            for (int x=2; x<result.length; x++)
            newPrivateMessage(username, result[1], result[x]);
        }
        else if(result[0].equalsIgnoreCase("/exit")){
            System.exit(0);
        }
        else{  
        error(brukernavn, "Wrong!");
        }

        return tekst;
    }

Мне нужно, чтобы ошибка была красной. Это сообщение («Неверно!») Отправляется пользователю, который написал что-то вроде / dfdsfsd Я получаю сообщение на экране, но я не могу получить его красным. Какая-то идея?

EDIT:

Помехи:

public interface ChatFront extends Remote {
        void error(String to, String message) throws RemoteException;
}

public interface Klient extends Remote {
        void error(String to, String message) throws RemoteException;
}  

На сервере:

class ChatFrontImpl extends UnicastRemoteObject implements ChatFront {

    private UserDAO b = new UserDAO();
    private Hashtable<String, ArrayList<String>> chanel = new Hashtable<String, ArrayList<String>>();
    private ArrayList<Klient> clients= new ArrayList<Client>();


    public ChatFrontImpl() throws RemoteException {
    }
public void error(String to, String message) throws RemoteException{
        errorTo(to, message);
    }
private void errorTo(String to, String message) throws RemoteException{
        for(Client k: clients){
            if(k.findName().equals(to)){
                k.error(to, message);
            }
        }
    }

Я отредактировал некоторые имена (используйте норвежский), так что это может быть проблемой для вас, но программа работает. Единственная проблема заключается в том, что я не могу получить красный цвет в сообщении об ошибке

РЕДАКТИРОВАТЬ 2: Забыли GUI в клиенте:

public class GUI extends javax.swing.JFrame {

    GUILogikk gl = new GUILogikk(this);

    public void error(String to, String message){
         //chatFelt.setCaretColor(Color.RED);
        chatFelt.append("" + message + "\n");
        chatFelt.setCaretPosition(chatFelt.getText().length());
    }
}

1 Ответ

0 голосов
/ 07 января 2012

Если вы используете консольное окно, вам нужно будет найти функции, специфичные для вашей операционной системы, чтобы установить цвет текста.Эти функции различаются в разных операционных системах, поэтому либо пересмотрите возможность использования окна консоли, либо решите проблему для каждой системы, в которой вы планируете использовать свое приложение.Если вы используете что-то вроде Swing, вы можете проверить доступные свойства цвета текста, связанные с компонентом, на котором вы пытаетесь рисовать (setSelectedTextColor () и т. Д.).Подробнее здесь: JTextArea

Если вы просто хотите рисовать на графическом объекте, вы можете сделать следующее:

g.setColor(Color.RED);
g.drawString("WRONG!", 32, 32); // text, x, y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...