0

Я искал похожие вопросы часами, но я понятия не имел о проблеме. Надеюсь, кто-то может мне помочь.Ни один из элементов на дисплее JPanel в JFrame

Вот класс SimulatedWindow отдельно от импорта:

public class SimulatedWindow extends JFrame { 

    private JFrame defFrame = new JFrame(); 

    SimulatedWindow() { 
     windowsInit(); 
    } 

    private void windowsInit() { 
     defFrame.setSize(new Dimension(600, 480)); 
     defFrame.setTitle("Radar Simulate System"); 
     defFrame.setLayout(null); 
     defFrame.setLocation(100, 100); 

     DefPanel defPanel = new DefPanel(); 
     // this.getContentPane().add(defPanel, BorderLayout.CENTER); 
     this.add(new DefPanel()); 
     defFrame.add(defPanel); 
     defFrame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     defFrame.setVisible(true); 
    } 

    class DefPanel extends JPanel { 
     private LeftPanel myLeftPanel; 
     private RightPanel myRightPanel; 

     public DefPanel() { 
      setLayout(null); 
      myLeftPanel = new LeftPanel(); 
      myRightPanel = new RightPanel(); 

      add(new JButton("Hello World!")); 
      add(myLeftPanel); 
      add(myRightPanel); 
      System.out.println("DefPAnel"); 
     } 
    } 


    class LeftPanel extends JPanel { 
     private JButton avgSpeedButton = new JButton(); 
     private JButton trafficColumeButton = new JButton(); 
     private JLabel avgSpeedLabel = new JLabel(); 
     private JLabel trifficColumeLabel = new JLabel(); 
     private JLabel curTimeLabel = new JLabel(); 

     LeftPanel() { 
      setLayout(null); 
      this.setBounds(0, 0, this.getSize().width, this.getSize().height); 

      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
      curTimeLabel.setText(df.format(new Date())); 
      add(curTimeLabel); 

      add(avgSpeedButton); 

      System.out.println("LeftPanel"); 
     } 
    } 
} 

Основная функция следующим образом:

public class SimulatedWindowTest { 

    public static void main(String[] args) { 
     SimulatedWindow simulatedWindow = new SimulatedWindow(); 
    } 
} 

Ни один из элементов (JButton, JLabel) в JPanel не проявляют.

+0

'this.setBounds (0, 0, this.getSize(). Width, this.getSize(). Height);' оставит панель размером 0 (getSize возвращает свой собственный размер, что 0). Кроме того, 'curTimeLabel' не имеет установленного размера. Наконец, вам следует избегать макета «null», если вам действительно не нужно позиционирование с помощью aboslute. – Berger

+2

Используйте [LayoutManager] (https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html) Люк. 'setLayout (null)' - путь к темной стороне. –

+0

Просто попробуйте 'setLayout (новый FlowLayout())' для начинающих –

ответ

0

Я считаю, что это может быть ваша проблема: check it

Основной ответ:

Это проблема с абсолютным позиционированием (или нулевой макет). Он требует, чтобы вы задавали размеры всех ваших компонентов, в противном случае они будут оставаться нулевыми по умолчанию и не появятся. Вот почему всегда лучше использовать layout manager.

+0

* «Я считаю, что это может быть вашей проблемой: проверьте это» * - Итак, вместо того, чтобы голосовать, чтобы закрыть вопрос, вы вместо этого решили, что вознаградить вознаграждение за чужой ответ? – MadProgrammer

 Смежные вопросы

  • Нет связанных вопросов^_^