我正在开发一个swing应用程序。我正在使用两个屏幕
1. screen1的一个按钮将启动屏幕2.
PseudoCode:
ScreenA extends JFrame{
onButtonClick(){
Screen2.setVisible(true);
}
System.out.println("Hai");
}
Screen2 extends JFrame{
onButtonClick{
Hide this screen;
}
}
现在输出是:
我的目标:我只想在点击屏幕2的按钮并且屏幕2消失时显示hai。
我如何实现它?
我尝试在屏幕二中为buttonclicked设置一个标志。 但程序只是通过条件并继续下一行。 我如何保持控制?
答案 0 :(得分:4)
希望此片段中的评论可以帮助您解释事情。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TwoFrames
{
// Making our first JFrame.
JFrame frame1 = new JFrame("FRAME 1");
// Declaring our second JFrame.
JFrame frame2 ;
public void createAndDisplayGUI()
{
// Used to close the JFrame graciously.
frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// Used to position the JFrame at the middle of the screen.
//frame1.setLocationRelativeTo(null);
// Use this instead for placing windows, as determined by the OS.
frame1.setLocationByPlatform(true);
// Calling this method to create our frame2.
makeNewFrame();
// Button to show the second JFrame.
JButton showButton = new JButton("SHOW NEW FRAME");
showButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
// Checking if the frame2 is already visible
// on the screen, if YES then we won't
// create a new frame, else a new frame
// will be created. This will prevent multiple
// JFrame to be created at the click of this button.
if (!(frame2.isShowing()))
{
// If you had already disposed it previously
// by clicking the hide Button on the other frame
// then the click on this button will recreate
// a new frame to be displayed.
makeNewFrame();
frame2.setVisible(true);
}
}
});
// Adding the button to the South side of the frame1.
frame1.add(showButton, BorderLayout.PAGE_END);
frame1.pack();
frame1.setVisible(true);
}
private void makeNewFrame()
{
frame2 = new JFrame("FRAME 2");
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.setLocationByPlatform(true);
// Creating a JButton to be shown on the JFrame.
JButton hideButton = new JButton("HIDE FRAME");
hideButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
// On the click of this button, frame2 will
// disappear and HAI will be displayed on the console.
frame2.dispose();
System.out.println("HAI");
}
});
// Adding the button to the South side of the frame1.
frame2.add(hideButton, BorderLayout.PAGE_END);
frame2.pack();
}
public static void main(String... args)
{
/* Here we are Secheduling a JOB for
* Event Dispatcher Thread, since Swing
* is not Thread Safe. This is used to place
* the code which is responsible for
* creating and diaplaying your GUI.
*/
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
TwoFrames tf = new TwoFrames();
tf.createAndDisplayGUI();
}
});
}
}
答案 1 :(得分:3)
使用模态对话框。有关详细信息,请参阅How to Make Dialogs。