繁体   English   中英

JTextField和JLabel没有出现

[英]JTextField and JLabel not appearing

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

       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);

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

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

img.setLayout( new BorderLayout() );

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

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

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);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM