2013-09-22 3 views
0
public class Benim extends JFrame { 
    Container contentArea = getContentPane(); 

public Benim(){ 
    JFrame frame=new JFrame("Concentration"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.pack(); 
    setSize(800, 800); 

    JButton start=new JButton("Start"); 
    JPanel pane=new JPanel(); 
    pane.add(start); 

    setVisible(true); 
    frame.add(start); 
    frame.add(pane); 
    /* setContentPane(Container) 


    JRootPane createRootPane()*/ 


} 

public static void main (String []args){ 

      new Benim(); 

} 
} 

Мой код - это. Сначала я попытался добавить в панель, а затем добавить панель в кадр, добавив в рамку напрямую. Добавление корневой папки, но моя кнопка не появляется. Я пытаюсь учиться в течение 2 дней, но я все еще в одном месте.Почему кнопка jframe не отображается?

ответ

0

Почему еще один экземпляр JFrame? Вы расширяете его, так что просто позвоните super().

public class Benim extends JFrame { 
    Container contentArea = getContentPane(); 

    public Benim(){ 
    super("Concentration"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    pack(); 
    setSize(800, 800); 

    JButton start=new JButton("Start"); 
    JPanel pane=new JPanel(); 
    pane.add(start); 
    add(pane); 

    setVisible(true); 
    } 

    public static void main (String []args){ 
    new Benim(); 
    } 
} 

Reimeus также справедливо указывает на то, что вам не нужно, чтобы продлить JFrame, если вы не планируете расширения функциональности. См. Его пример для альтернативной реализации.

+1

спасибо, taugth меня много вещей. Я сделаю такую ​​игру http://www.mathsisfun.com/games/memory/ Я буду использовать панель для карточек, и я добавлю кнопки start stop и т. Д. , это работает? –

+0

Уверен, что это сработает. Но я предполагаю, что вам все равно придется немного поучаствовать в этом, продолжайте! Похоже на хорошее упражнение. – Blacklight

2

Экземпляр JFrame, который показан, не содержит JButton.

Вместо вызова setVisible на JFrame непосредственно

Вы почти никогда не хотите расширить JFrame как никакой новой функциональности не добавлено

Другие пункты отметить, после того, как компоненты были добавлены

  • вызов setVisible
  • setSize не требуется - пусть pack определить контейнер размер

Это результат

public class Benim extends JFrame { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       JFrame frame = new JFrame("Concentration"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

       JButton start = new JButton("Start"); 
       JPanel pane = new JPanel(); 
       pane.add(start); 


       pane.add(start); 
       frame.add(pane); 
       frame.pack(); 
       frame.setVisible(true);    
      } 
     }); 
    } 
} 
+0

+1 для точки расширения JFrame. – asgs

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