簡體   English   中英

Java Swing GUI不可見

[英]Java Swing GUI Invisible

基本上,我有一個非常簡單的GUI,但是由於某些原因,當我運行代碼時,JButton僅在將鼠標懸停在它們上方時出現,而JTextField僅在單擊它們時才會出現。 如何解決此問題,使其在程序運行時可見? 謝謝。

這是我的代碼:

    //JFrame + settings
    JFrame frmFormSubmission = new JFrame();

    frmFormSubmission.setSize(new Dimension(350, 165));
    frmFormSubmission.setTitle("Form Submission - Client");
    frmFormSubmission.setLocationRelativeTo(null);
    frmFormSubmission.setVisible(true);
    frmFormSubmission.setResizable(false);
    frmFormSubmission.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //JPanel
    JPanel panel = new JPanel();
    frmFormSubmission.getContentPane().add(panel, BorderLayout.CENTER);
    panel.setLayout(null);

    //JLabels
    //Name
    JLabel lblName = new JLabel("Name:");
    lblName.setFont(new Font("Tahoma", Font.PLAIN, 14));
    lblName.setBounds(46, 12, 40, 14);
    panel.add(lblName);

    //Address
    JLabel lblAddress = new JLabel("Address:");
    lblAddress.setFont(new Font("Tahoma", Font.PLAIN, 14));
    lblAddress.setBounds(33, 37, 53, 14);
    panel.add(lblAddress);

    //Phone
    JLabel lblPhone = new JLabel("Phone #:");
    lblPhone.setFont(new Font("Tahoma", Font.PLAIN, 14));
    lblPhone.setBounds(28, 62, 58, 14);
    panel.add(lblPhone);

    //Email
    JLabel lblEmail = new JLabel("Email:");
    lblEmail.setFont(new Font("Tahoma", Font.PLAIN, 14));
    lblEmail.setBounds(46, 87, 36, 14);
    panel.add(lblEmail);

    //JTextFields
    //Name
    nameField = new JTextField();
    nameField.setBounds(93, 11, 137, 20);
    panel.add(nameField);
    nameField.setColumns(10);

    //Address
    addressField = new JTextField();
    addressField.setColumns(10);
    addressField.setBounds(93, 36, 137, 20);
    panel.add(addressField);

    //Phone
    phoneField = new JTextField();
    phoneField.setColumns(10);
    phoneField.setBounds(93, 61, 137, 20);
    panel.add(phoneField);

    //Email
    emailField = new JTextField();
    emailField.setColumns(10);
    emailField.setBounds(93, 86, 137, 20);
    panel.add(emailField);

    //JButtons
    //Submit
    JButton btnSubmit = new JButton("Submit");
    btnSubmit.setBounds(240, 10, 89, 23);
    panel.add(btnSubmit);

    //Cancel
    JButton btnCancel = new JButton("Cancel");
    btnCancel.setBounds(240, 44, 89, 23);
    panel.add(btnCancel);

    //Flush
    JButton btnFlush = new JButton("Flush");
    btnFlush.setBounds(240, 76, 89, 23);
    panel.add(btnFlush);

    //Checkbox
    JCheckBox chckbxPromotions = new JCheckBox("Email me with new and promotions!");
    chckbxPromotions.setBounds(25, 108, 205, 23);
    panel.add(chckbxPromotions);

很感謝任何形式的幫助!

調用frmFormSubmission.setVisible(true); 作為您要做的最后一件事。 setVisible將對組件進行布局,以便可以正確繪制它們。 如果添加組件時不進行布局,則將遇到圖形問題。

有關這意味着什么的更多信息,請查看validate方法的文檔。

另外,嘗試

frmFormSubmission.invalidate();
frmFormSubmission.validate();
frmFormSubmission.repaint();

如果仍然無法解決問題,可以嘗試以下操作:

SwingUtilities.updateComponentTreeUI(frmFormSubmission);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM