我想在frameview之前添加Jdialog ...我的frameview包含我的主要应用页面。我只想添加从用户获取密码的Jdialog,然后输入主框架。任何人都可以告诉我如何在java swing中实现这一点??
答案 0 :(得分:2)
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可以强制用户登录,不提供任何其他选项,但登录,注册等
答案 1 :(得分:1)
答案 2 :(得分:1)
您可以使用以下构造函数来创建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);
}
}