2013-11-20 3 views
0

Работа над добавлением графического интерфейса в мою простую программу моделирования обложек.Пустая JPanel после добавления JTextField

Создал новый JPanel и добавил к нему несколько JTextFields с текстовым значением по умолчанию. Я не получаю ошибки, и код работает, но все, что я получаю, - это пустое окно, в котором ничего нет.

Вот код:

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

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

public class CrapsGUI extends JFrame 
{ 
    JPanel jp = new JPanel(); 
    JLabel jl = new JLabel(); 
    JTextField die1 = new JTextField("Die 1",30); 
    JTextField die2 = new JTextField("Die 2",30); 
    JTextField sum = new JTextField("Sum",30); 
    JTextField point = new JTextField("Point",30); 
    JTextField status = new JTextField("Status",30); 

    public CrapsGUI() 
    { 
     setTitle("Craps Simulator 2013"); 
     setVisible(true); 
     setSize(400, 200); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 

     jp.add(die1); 
     jp.add(die2); 
     jp.add(sum); 
     jp.add(point); 
     jp.add(status); 
    } 

    public static void main(String[] args) 
    { 
     Craps craps = new Craps(); 

     CrapsGUI crapsGUI = new CrapsGUI(); 
    } 
} 

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

ответ

1

Вы не добавили JPanel, который содержит видимые компоненты.

add(jp); 
+0

Ничего себе не могу поверить, что я пропустил этот очевидный. Все работает сейчас, спасибо! – SirFerret

0

Три вещи приходят на ум

  1. Убедитесь, что вы начинаете ваши UI изнутри контекста событий диспетчерской темы. См Initial Threads для более подробной информации
  2. Вызов setVisible только после того, как вы закончите создание пользовательского интерфейса
  3. Было бы также полезно, если вы добавили что-то к вам кадр. Попробуйте использовать add(jp)
0
try this one: 

public static void createAndShowGUI() { 
    // Create and set up the window. 
    JFrame frame = new JFrame("Sample Frame"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    // first text box 
    JPanel textbox1Panel = new JPanel(); 
    textbox1Panel.setLayout(new BoxLayout(textbox1Panel, 0)); 
    textbox1Panel.setOpaque(true); 
    textbox1Panel.setBackground(new Color(100, 0, 131)); 
    textbox1Panel.setPreferredSize(new Dimension(300, 300)); 
    textbox1Panel.add(die1); 
    textbox1Panel.add(die2); 
    textbox1Panel.add(sum); 
    textbox1Panel.add(point); 

    // Set the menu bar and add the label to the content pane. 

    frame.getContentPane().add(textbox1Panel, BorderLayout.SOUTH); 

    // Display the window. 
    frame.pack(); 
    frame.setVisible(true); 
} 
Смежные вопросы