【问题标题】:JFrame setVisible not workingJFrame setVisible 不起作用
【发布时间】:2015-04-28 20:07:02
【问题描述】:

一旦按下登录按钮,我正在构建一个登录表单,它会关闭登录框架并应该显示主菜单。

问题是无论我做什么,它都会给我一个错误找不到符号集可见

请帮帮我

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
/**
 *
 * @author 
 */
public class Login extends Application {
    private JFrame frame;// frame of the interface
    private JLabel name = new JLabel ("Username:");
    private JLabel pass = new JLabel ("Password:");
    private JTextField username = new JTextField();
    private JPasswordField password = new JPasswordField(); // password text box
    private JTextField empty = new JTextField();
    private JButton login = new JButton("Login");
    private JPanel panel = new JPanel();

    public Login()
    {
        makeFrame();
    }
    private void makeFrame()
    {
       frame = new JFrame("Login");  
       frame.setSize(300,200);
       makeMenuBar(frame);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       Container contentPane = frame.getContentPane();
       //makes application start in the center of the screen
       Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
       frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);
       //border
       UIManager.getDefaults().put("TitledBorder.titleColor", Color.BLACK);
       Border lowerEtched = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
       TitledBorder title = BorderFactory.createTitledBorder(lowerEtched, "Login");
       Font titleFont = UIManager.getFont("TitledBorder.font");
       title.setTitleFont( titleFont.deriveFont(Font.ITALIC + Font.BOLD) );
       panel.setBorder( title );
       //border end
       frame.setVisible(true);  
       frame.add(panel);

       panel.add(name);
       panel.add(username);
       panel.add(pass);
       panel.add(password);
       password.setEchoChar('*');
       panel.add(empty);
       empty.setVisible(false);
       panel.add(login);
       login.addActionListener(new ActionListener()
        {public void actionPerformed(ActionEvent e) { try
       {
           String user = username.getText().trim();
           String pass = new String(password.getPassword());
           String sql = "select user,pass from Login where Username = '"+user+"'and pass='"+pass+"'";

           if(rs.next())
           {
               JOptionPane.showMessageDialog(null,"Welcome");
               frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));

               MainScreen s = new MainScreen();
               s.setVisible(true); //<- here is the problem
           }
           else
           {
               JOptionPane.showMessageDialog(null,"Wrong username or password");
           }
       }
       catch(Exception ex){

       } }
         });
       panel.setLayout(new GridLayout(3,2));

    }

}

【问题讨论】:

    标签: java swing user-interface jframe awt


    【解决方案1】:

    可能的 setVisible() 未在 MainScreen 中定义。我认为 MainScreen 应该扩展 JFrame。最有可能是 MainScreen 成员的 jframe(标题为“main”)是这个候选者。

    【讨论】:

    • 我已经添加了主屏幕..目前它或多或少是这个的副本..我没有做太多,因为我无法让它显示
    • 应用程序主要只是数据库连接...我认为它不会影响可见性...我在帖子中添加了应用程序
    • 为什么要从与GUI无关的Application继承MainScreen?
    • “我认为 MainScreen 应该扩展 JFrame。” 除非更改现有功能或添加新功能,否则不要扩展。在这种情况下,我们只需要一个(标准)JFrame 的实例,所以没有理由扩展。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多