2014-01-26 4 views
1

Я пробовал создавать простой графический интерфейс с использованием JFrame с кодом ниже.Java JPannel not Visible

package sorting_array_gui; 

package sorting_array_gui; 



import java.awt.BorderLayout; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.Insets; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

import javax.swing.JScrollPane; 

import javax.swing.JTable; 

import javax.swing.JTextArea; 

import javax.swing.JTextField; 

import javax.swing.WindowConstants; 

import javax.swing.table.DefaultTableModel; 


public class userwindow extends JFrame { 

private static final long serialVersionUID = 1L; 



public userwindow() { 
     super("A Programm to Sort Your Array"); 
     setSize(1000,600); 
     setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     setVisible(true); 

     JPanel p1= new JPanel(); 

     JButton b1= new JButton("Click Here"); 
     p1.add(b1); 

     JTextField t1= new JTextField(); 


     p1.add(t1); 
     JLabel l1= new JLabel("This is a Lable"); 
     p1.add(l1); 



     add(p1,BorderLayout.CENTER); 



} 


} 

Когда я добавил JTextField, JPlane вспылила и даже JButton и JLabel купировались показывая. Почему это происходит.

ответ

2

«Когда я добавил JTextfield, JPlane ошибочно и даже JButton и JLabel прекратили показ».

Я не получаю такое поведение с вашим кодом. Но вы должны отметить ниже.

  • setVisible(true); должно быть, что последнего, что вы делаете после добавления всех компонентов.

    public userwindow() { 
        super("A Programm to Sort Your Array"); 
        JPanel p1= new JPanel(); 
        JButton b1= new JButton("Click Here"); 
        p1.add(b1); 
        JTextField t1= new JTextField(); 
        p1.add(t1); 
        JLabel l1= new JLabel("This is a Lable"); 
        p1.add(l1); 
        add(p1,BorderLayout.CENTER); 
    
    
        pack();             <--- PACK frame 
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
        setVisible(true);          <--- LAST 
    
    } 
    
  • Кроме того, вы должны установить размер для вашего текстового поля с помощью конструктора, который устанавливает ширину колонки

    JTextField t1 = new JTextField(20); 
    
  • Кроме того, вы должны использовать pack() вместо setSize(). Если вы только pack(), все должно быть видимым, так как предпочтительные размеры всех компонентов соблюдаются.

  • Также обратите внимание, что если вы хотите добавить любые другие компоненты к JFrame вам необходимо указать BorderLayout позиции для каждого компонента, с не позиции не используется более чем один раз. См. Laying out Components Within a Container