2015-09-24 2 views
-1

начинающий с использованием GUI и не может понять, почему это не добавляет поля в мой графический интерфейс. Он открывает фрейм, но он пуст. Ошибок нет. Любая помощь приветствуется.GUI, не добавляющий панели

import javax.swing.*; 
import java.awt.*; 

public class Project3 extends JFrame { 

    public Project3() { 

     //set layout 
     setLayout(new GridLayout(5, 2, 5, 5)); 

     //add radio panel 
     JPanel radioPanel = new JPanel(); 

     //set Radio Buttons 
     JRadioButton iter = new JRadioButton("Iteration", true); 
     JRadioButton recur = new JRadioButton("Recursion", true); 

     //add radio buttons to group 
     ButtonGroup radioGroup = new ButtonGroup(); 
     radioGroup.add(iter); 
     radioGroup.add(recur); 
     radioPanel.add(iter); 
     radioPanel.add(recur); 
     recur.setSelected(true); 

     //add another panel 
     JPanel secondPanel = new JPanel(); 
     secondPanel.setLayout(new GridLayout(4, 2, 5, 5)); 

     //add text fields and button 
     JLabel enter = new JLabel("Enter n:"); 
     JTextField eight = new JTextField(8); 
     //????????????????????????????? 
     JButton compute = new JButton("Compute"); 
     JLabel result = new JLabel("Result:"); 
     JTextField eight1 = new JTextField(8); 
     JLabel efficiency = new JLabel("Efficiency:"); 
     JTextField eight2 = new JTextField(8); 

     //add items to panel 
     secondPanel.add(enter); 
     secondPanel.add(eight); 
     secondPanel.add(compute); 
     secondPanel.add(result); 
     secondPanel.add(eight1); 
     secondPanel.add(efficiency); 
     secondPanel.add(eight2); 

     add(radioPanel); 
     add(secondPanel); 

    } 

    public static void main(String[] args) { 

     // Create frame 
     JFrame frame = new JFrame("Project 3"); 
     frame.setSize(400, 300); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 

    } 

} 

ответ

1

Вы просто создать простой JFrame. Вам нужно создать экземпляр класса Project3, который вы написали.

I.e.

public static void main(String[] args) { 

    // Create frame 
    Project3 frame = new Project3(); 
    frame.setTitle("Project 3"); 
    frame.setSize(400, 300); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
} 
+0

Спасибо Джеймс ... знал, что это был простой надзор. Ценю вашу помощь. – Brad

1

Вы никогда не создать Project3 - просто JFrame.

Pehaps

// Create frame 
JFrame frame = new JFrame("Project 3"); 

должен был быть

// Create frame 
JFrame frame = new Project3(); 
2

Вы Project3 простирается от JFrame, но в методе main создать совершенно отдельный экземпляр JFrame и игнорировать ваш Project3 класс вообще

Это просто добавить путаницы, вместо этого, расширить Project3 от JPanel и ADD экземпляр этого для вновь созданных JFrame

import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.GridLayout; 
import javax.swing.ButtonGroup; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JRadioButton; 
import javax.swing.JTextField; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class Project3 extends JPanel { 

    public Project3() { 

     //set layout 
     setLayout(new GridLayout(5, 2, 5, 5)); 

     //add radio panel 
     JPanel radioPanel = new JPanel(); 

     //set Radio Buttons 
     JRadioButton iter = new JRadioButton("Iteration", true); 
     JRadioButton recur = new JRadioButton("Recursion", true); 

     //add radio buttons to group 
     ButtonGroup radioGroup = new ButtonGroup(); 
     radioGroup.add(iter); 
     radioGroup.add(recur); 
     radioPanel.add(iter); 
     radioPanel.add(recur); 
     recur.setSelected(true); 

     //add another panel 
     JPanel secondPanel = new JPanel(); 
     secondPanel.setLayout(new GridLayout(4, 2, 5, 5)); 

     //add text fields and button 
     JLabel enter = new JLabel("Enter n:"); 
     JTextField eight = new JTextField(8); 
     //????????????????????????????? 
     JButton compute = new JButton("Compute"); 
     JLabel result = new JLabel("Result:"); 
     JTextField eight1 = new JTextField(8); 
     JLabel efficiency = new JLabel("Efficiency:"); 
     JTextField eight2 = new JTextField(8); 

     //add items to panel 
     secondPanel.add(enter); 
     secondPanel.add(eight); 
     secondPanel.add(compute); 
     secondPanel.add(result); 
     secondPanel.add(eight1); 
     secondPanel.add(efficiency); 
     secondPanel.add(eight2); 

     add(radioPanel); 
     add(secondPanel); 

    } 

    public static void main(String[] args) { 

     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
        ex.printStackTrace(); 
       } 

       JFrame frame = new JFrame("Project 3"); 
       frame.add(new Project3()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setVisible(true); 
      } 
     }); 
    } 

} 

делая это, лет u отделите свой код и обеспечите более высокий уровень повторного использования вашего компонента, теперь вы можете добавить Project3 в какой-либо контейнер, который вам нравится

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