问题
I had build big application for my client in Android. The new project is to build the same app for PC in Java. So i have started developing with use of swing. When building in Android i use classes with activities that had content views and i could switch between activities. In java i have build multiple classes that extends JFrame and i wish to switch between them. What is the right way to to this?
is this:
new_class.setVisible(true);
old_class.setVisible(false);
the correct way?
回答1:
The general approach using Swing would be to either combine all the GUI elements 'screens' in one top level container using the appropriate strategy (generally a CardLayout
, but the devil is in the details). This GUI shows some other options (JSplitPane
& nested layouts):
See also this answer for many other alternatives.
For any other functionality which would logically be in a different container, use a (possibly) modal dialog or a JOptionPane
. E.G. a log-in, popped from the main frame:
Another thing to take into account is that Swing (with a desktop monitor) allows us to offer a richer set of components to the user. For instance, surfing around the Android SD card file system would generally be achieved by using one list per directory, and either changing the content of the list or view on entering a new directory. In Swing you might use a single JTree
for that. So there is much less need for 'different screens' in a desktop GUI toolkit, over one designed to be used on a tab or phone.
Here is a tree as used in a file browser.
回答2:
The right way is to create instances from these JFrames
and set it's visibility.
new Fram1().setVisible(true);
new Fram2().setVisible(true);
来源:https://stackoverflow.com/questions/10781401/switching-between-screens-in-java-swing