JAVA: Popup menu in diffrent class then main Applet, how to repaint()?
ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
JAVA: Popup menu in diffrent class then main Applet, how to repaint()?
In an attempt to better organise my code, I decided to have a main class,
Code:
public class MainClass extends Applet implements MouseListener, MouseMotionListener
and a second DrawMenu class,
Code:
public class DrawMenu extends PopupMenu implements MouseListener, MouseMotionListener, ActionListener
And it works perfect, except that after issuing a command in the menu, I need a repaint() in MainClass... ofc I can't create an instance of MainClass in DrawMenu, can't call MainClass.repaint() as it is not static... so I'm kind of stuck. Is there a proper way to do this, or do I have to put them in the same class?
I assume that your first class creates the instance of the second class.
In which case, simply pass a reference of MainMenu to DrawMenu - either in the constructor, or as a method call after the constructor, and store the reference in an instance variable.
Then, when you need to call MainMenu "repaint" in DrawMenu, you can call it - by using the reference you have saved.
WARNING - TECHNICAL ALERT
But if I was to be honest, I would have to say that this will only work if the routine in DrawMenu was being invoked in the GUI thread, but it might not be - so ignore this caveat :-)
Found another solution, sort of... Made MainClass runnable, and in it, created a "boolean modified", which will be set true if i click something in the menu in the other class.
Then I have a...
Code:
public void run(){
while (true){
System.out.print("");
if (modified){
repaint();
modified=false;
}
}
}
What's with the System.out.print("");? Well, apparently, if I don't have something outside the if that executes on each run, it doesn't work...
So... new question: why is this, and how is it usually done?
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.