【发布时间】:2011-12-22 15:34:41
【问题描述】:
我想在 frameview 之前添加 Jdialog...我的 frameview 包含我的应用程序主页。我只想添加从用户那里获取密码然后进入主框架的 Jdialog。谁能告诉我如何在 java swing 中实现这一点??
【问题讨论】:
我想在 frameview 之前添加 Jdialog...我的 frameview 包含我的应用程序主页。我只想添加从用户那里获取密码然后进入主框架的 Jdialog。谁能告诉我如何在 java swing 中实现这一点??
【问题讨论】:
MyMainPanel mainPanel = new MyMainPanel();
LoginPanel loginPanel = new LoginPanel();
JFrame mainApp = new JFrame();
mainApp.add( mainPanel );
mainApp.pack();
mainApp.setVisible(true);
JDialog dialog = new JDialog( mainApp, true );
dialog.add( loginPanel );
dialog.setVisible( true );
if( login.isAuthenticated() ) { // after dialog is dismissed we can set the user
mainPanel.setAuthenticatedUser( loginPanel.getAuthenticatedUser() );
} else {
System.exit(-1);
}
这将在您的主面板前面显示一个对话框,并且用户在登录之前无法使用它,因为它是模态的,并且您的 LoginPanel 可以通过不提供任何其他选项但登录来强制用户登录,注册等。
【讨论】:
【讨论】:
您可以使用以下构造函数来使 JDialog 无父对象
JDialog d = new JDialog((Dialog)null);
JDialog d = new JDialog((Window)null);
JDialog d = new JDialog((Frame)null);
快速代码示例:
public class TestFrame extends JFrame{
public TestFrame(){
setSize(100,200);
}
public static void main(String[] args) {
//Using null constructor ( Since JDK 6)
final JDialog loginDialog = new JDialog((Dialog)null);
//just a button for demo
JButton okButton = new JButton("Login");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
TestFrame test = new TestFrame();
test.setVisible(true);
loginDialog.dispose();
}
});
loginDialog.getContentPane().add(okButton);
loginDialog.pack();
loginDialog.setVisible(true);
}
}
【讨论】:
main 方法)。在对话框的“登录”操作中,我们将“主框架”设置为可见。 (第 13、14、15 行)。