【问题标题】:Blank JPanel after adding a JTextField添加 JTextField 后的空白 JPanel
【发布时间】:2013-11-20 01:02:51
【问题描述】:

正在为我的简单掷骰子模拟程序添加 GUI。

制作了一个新的 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();
   }
}

提前致谢!

【问题讨论】:

    标签: java swing jpanel jtextfield


    【解决方案1】:

    您尚未添加包含可见组件的JPanel

    add(jp);
    

    【讨论】:

    • 哇,不敢相信我错过了那个明显的。现在一切正常,谢谢!
    【解决方案2】:

    想到三件事

    1. 确保从事件调度线程的上下文中启动 UI。详情请见Initial Threads
    2. 只有在您完成 UI 的创建后才能致电 setVisible
    3. 如果您在框架中添加一些内容也会很有帮助。尝试使用add(jp)

    【讨论】:

      【解决方案3】:
      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);
      }
      

      【讨论】:

        猜你喜欢
        • 2013-04-13
        • 1970-01-01
        • 1970-01-01
        • 2018-04-18
        • 2010-10-07
        • 2013-06-05
        • 1970-01-01
        • 1970-01-01
        • 2015-09-07
        相关资源
        最近更新 更多