У меня есть JFrame
, который выглядит как обычное окно чата. Для подключения и отключения от сервера я реализовал JPopupMenu
и добавил MouseListener
в главное окно.
Однако всплывающее меню не появляется.
Various JComponents in the main window:
JTextArea
в пределах JScrollPane
JTextField
для ввода сообщенияSend
JScrollPane
и ArrayList
для отображения пользователейThe popup is supposed to appear no matter where you right click. Be it on the
JTextArea
or the field to enter your message.To which all components do I add listeners and what listener do I add ?
Код
Переменные:
private static A_Chat_Client chatClient;
public static String userName = "Anonymous";
//------------------------------------------------------------------------------
public static JFrame mainFrame = new JFrame();
public static JTextArea textArea = new JTextArea(30,30);
public static JScrollPane pane = new JScrollPane(textArea);
public static JTextField message = new JTextField(10);
public static JButton send = new JButton("Send");
public static JPopupMenu popup = new JPopupMenu();
public static JMenuItem connect = new JMenuItem("Connect");
public static JMenuItem disconnect = new JMenuItem("Disconnect");
public static JMenuItem help = new JMenuItem("Help");
public static JList usersOnline = new JList();
public static JScrollPane userPane = new JScrollPane(usersOnline);
Основной метод
public static void main(String[] args) {
buildMainWindow();
initialize();
addListeners();
popup.show(mainFrame, 0, 0); //forcefully popup
}
добавить слушателей()
public static void addListeners(){
mainFrame.addMouseListener(new MouseHandler());
send.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
actionSend();
}
});
connect.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
actionConnect();
}
});
disconnect.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
actionDisconnect();
}
});
help.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
actionHelp();
}
});
}
класс MouseHandler
private static class MouseHandler extends MouseAdapter{
@Override
public void mouseClicked(MouseEvent e){
if(e.isPopupTrigger()){
popup.show(mainFrame, e.getX(), e.getY());
}
}
}