【问题标题】:JTextField and JLabel not appearingJTextField 和 JLabel 没有出现
【发布时间】:2013-12-22 23:56:34
【问题描述】:

我的 JLabel 和 JTextField 没有出现在图像上方,我不知道为什么。我已将图像放在 JLabel 和 setOpaque(false) 上,但没有运气。有什么建议吗?我在这里先向您的帮助表示感谢。

       private JTextField tf;
       private JLabel jl2;
       private JLabel jl3;

       public void window() {
           ImageIcon ic = new ImageIcon("hangman.png");
          JFrame gameFrame = new JFrame();
          JPanel jp = new JPanel();
          jp.setOpaque(false); //!!
          jp.setBorder(BorderFactory.createTitledBorder(""));
          JLabel img = new JLabel(ic, JLabel.CENTER);
          img.setOpaque(false);
          JLabel jl = new JLabel("Enter a Letter:");
          jl.setFont(new Font("Rockwell", Font.PLAIN, 20));
          tf = new JTextField(1);
          jl2 = new JLabel("Letters Used:    ");
          jl3 = new JLabel();//blank spaces
          tf.setFont(new Font("Rockwell", Font.PLAIN, 20));
          jl2.setFont(new Font("Rockwell", Font.PLAIN, 20));
          jp.add(jl);
          jp.add(tf);
          jp.add(jl2);
          jp.add(jl3);
          gameFrame.add(img);
          img.add(jp);
          gameFrame.setTitle("Hangman");
          gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          gameFrame.setIconImage(
          new ImageIcon("Hangman-Game-grey.png").getImage());
          gameFrame.setResizable(false);
          gameFrame.pack();
          gameFrame.setLocationRelativeTo(null);
          gameFrame.setVisible(true);

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing jpanel jlabel jtextfield


【解决方案1】:

默认情况下,JLabel 不使用布局管理器,因此不会绘制添加到标签的组件。

尝试设置布局管理器。也许:

img.setLayout( new BorderLayout() );

或选择符合您要求的布局。

【讨论】:

    【解决方案2】:

    您应该分别将图像、标签和文本字段对象添加到面板。然后,您应该将该面板添加到您的框架中。另外,在调用jp.add() 方法之前放置gameFrame.add(img); 代码。我不知道,如果这是您想要的,但从您尝试做的事情来看,我可以说下面的代码应该可以工作:

    public void window()
            {
            ImageIcon ic = new ImageIcon("hangman.png");
            JFrame gameFrame = new JFrame();
            JPanel jp = new JPanel();
            jp.setOpaque(false); // !!
            jp.setBorder(BorderFactory.createTitledBorder(""));
            JLabel img = new JLabel(ic, JLabel.CENTER);
            img.setOpaque(false);
            JLabel jl = new JLabel("Enter a Letter:");
            jl.setFont(new Font("Rockwell", Font.PLAIN, 20));
            tf = new JTextField(1);
            jl2 = new JLabel("Letters Used:    ");
            jl3 = new JLabel();// blank spaces
            tf.setFont(new Font("Rockwell", Font.PLAIN, 20));
            jl2.setFont(new Font("Rockwell", Font.PLAIN, 20));
            jp.add(img);
            jp.add(jl);
            jp.add(tf);
            jp.add(jl2);
            jp.add(jl3);
            gameFrame.add(jp);
            gameFrame.setTitle("Hangman");
            gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            gameFrame.setIconImage(new ImageIcon("1.jpg").getImage());
            gameFrame.setResizable(false);
            gameFrame.pack();
            gameFrame.setLocationRelativeTo(null);
            gameFrame.setVisible(true);
            }
    

    【讨论】:

      猜你喜欢
      • 2019-01-24
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 2016-10-14
      相关资源
      最近更新 更多