Java:AWT标签没有显示出来

时间:2012-03-02 18:15:52

标签: java label awt filereader

非常简单的问题。我的Java AWT(不是Swing)标签根本就没有显示出来。以下大多数代码甚至没有被使用(用于调试此问题)。

请注意:这是在Frame的构造函数中(是的,我添加了其他几个面板,这样就可以正常工作)。其次,框架的布局已设置为null

我很难过。

File inf = new File("instructions.txt");
        Label ilb;
        if(inf.exists())
        {
            Log.v("Loading instructions");

            try
            {
                FileInputStream fis = new FileInputStream(inf);
                byte[] insb = new byte[65535];
                fis.read(insb);
                fis.close();
                String inst = new String(insb);
                ilb = new Label("test", Label.LEFT);
                File fntfile = new File("font/pf_tempesta_seven.ttf");
                Font infnt = null;
                try {
                    FileInputStream ffis = new FileInputStream(fntfile);
                    infnt = Font.createFont(Font.TRUETYPE_FONT, ffis);
                    ffis.close();
                } catch (FontFormatException e) {
                    Log.e("Could not format LCD font!", e);
                } catch (IOException e) {
                    Log.e("Could not read LCD font file!", e);
                }

                if(infnt == null)
                    infnt = new Font("Trebuchet MS", Font.PLAIN, 8);
                else
                    infnt = infnt.deriveFont(8.0f);

                //ilb.setFont(infnt);
                //ilb.setForeground(new Color(123, 123, 123));

                //ilb.setPreferredSize(new Dimension(350, 400));
                //ilb.setSize(350, 400);

                //ilb.setLocation(580, 190);

                Log.d("adding label");
                add(ilb);

            } catch(IOException e) {
                Log.e("Could not read instructions!", e);
            }
        }else
            Log.w("Instructions file not found!");

2 个答案:

答案 0 :(得分:1)

1)今天的GUI使用Swing JComponents(以J开头)而不是史前AWT Label

2)对于您的问题,可以更好地使用方法append()

JTextArea

3)您遇到问题Concurency (in Swing) AWT / Swing是单线程的,并且GUI的所有输出都必须包含在invokeLater

4)为了更好的帮助,您可以使用SSCCE

编辑问题

答案 1 :(得分:1)

正如@JBNizet建议的那样,null布局不适用于所有AWT组件。

我被Panel放置得很好,我null上的Frame布局很好,而标签需要基本布局显示。我很想说所有其他组件都具有相同的“功能”,但我的代码的另一部分证明了这一点错误:

// Load Image
        Log.v("Loading header image");
        _iBG = new ImageIcon("img/hpcount_top_bg.png").getImage();

        // Set size
        setSize(1024, 152);
        setPreferredSize(new Dimension(1024, 152));

        // Set position
        setLocation(0, 0);

        // Set visible
        setVisible(true);

        // Set layout
        setLayout(null);

        // Add children
        add(new Exit()); // Exit extends java.awt.Button

上面的代码(位于扩展java.awt.Panel的类的构造函数中)完美无缺。

我的解决方法是将标签放在带有布局的另一个Panel内(杂乱,但它有效)并将该面板放在Frame内,以达到同样的效果。