2015-08-05 3 views
1

Я работаю над этим проектом для задания, и я застрял в этой проблеме. Я новичок и не понимаю большую часть программирующего жаргона, поэтому, если кто-то может объяснить, почему моя программа не работает, это было бы здорово.Как отобразить несколько JPanels с несколькими макетами?

Цель программы - отобразить случайно сгенерированную матрицу из 1 и 0 в макете 10x10 и иметь несколько кнопок сверху, которые имеют функции. Я просто расскажу о том, как получить все, чтобы отобразить.

Заранее спасибо.

UPDATE :: Told предоставляя весь мой код поможет

public class Module5 extends JFrame { 

private static JTextArea area = new JTextArea(); 
private static JFrame frame = new JFrame(); 
private static JPanel general = new JPanel(); 
private static JPanel buttons = new JPanel(); 
private static JPanel numbers = new JPanel(); 
private static JButton button0 = new JButton("Reset to 0"); 
private static JButton button1 = new JButton("Resset to 1"); 
private static JButton buttonReset = new JButton("Reset"); 
private static JButton quit = new JButton("Quit"); 

public static class Numbers extends JPanel { 

    public Numbers() { 
     area.setText(Integer.toString((int) Math.round(Math.random()))); 
     this.add(area); 
    }  

    public void Module5(){ 

     numbers.setLayout(new GridLayout(10, 10)); 
     for (int i = 0; i < 100; i++) { 
      this.add(new Numbers()); 
     } 
    } 
} 

public static void main (String[] args) { 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(300, 300); 
    frame.setVisible(true); 

    general.setLayout(new BoxLayout(general, BoxLayout.Y_AXIS)); 
    general.add(buttons); 
    general.add(numbers); 

    buttons.add(button0); 
    buttons.add(button1); 
    buttons.add(buttonReset); 

    buttons.add(quit); 
    quit.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) 
     { 
      System.exit(0); 
     } 
    }); 
} 

}

+0

Пожалуйста, включают остальная часть вашего кода, то есть определения «общие», «кнопки» и т. д. Это поможет нам определить, в чем проблема. –

+0

@JavaDevil не забудьте добавить все, спасибо за помощь – Joe

+0

Вы никогда не добавляете свой «общий» JPanel в 'frame'. Вставьте 'frame.setContentPane (general);' и вы увидите свои кнопки. - Это должно заставить вас начать. Поскольку это задание, не ожидайте слишком много помощи в написании всей программы. – Carsten

ответ

0

Так как это будет выглядеть как домашнее задание, я дам вам несколько советов, но я не собираюсь давать вам код.

  1. Перемещайте конструктор Module5 из класса чисел и в своем классе. Также удалите возвращаемый тип void, чтобы сделать его правильным конструктором.

  2. Переместите код в своем главном в конструктор для Module5. Это основной кадр, поэтому, когда вы строите новый, он должен быть инициализирован здесь, а не в основном. И удалить setVisible вызов на данный момент (это рассматривается в числе 6)

  3. После выполнения 1 и 2, избавиться от frame переменных, вашего Module5 является JFrame так ничего общего с frame может просто быть изменена на ключевое слово this (что означает этот Module5 объект)

  4. также переместить переменную area быть в пределах Numbers класса - в противном случае каждый Number, по существу, поделится той же текстовой областью и это не то, что вы хотите.

  5. У вас нет переменных в качестве static, им это не должно быть.

  6. После того, как все это делается убедитесь, что он работает на Event диспетчерской темы, сделав свой основной метод, как это (один кусок кода, который я дам вам)

    public static void main(String[] args) 
    { 
        SwingUtilities.invokeLater(new Runnable() 
        { 
         @Override 
         public void run() 
         { 
          Module5 mod5 = new Module5(); 
          mod5.setVisible(true); 
         } 
        }); 
    } 
    
Смежные вопросы