2012-03-02 70 views
-4

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

只是一个注释:这是在一个框架的构造函数(是的,我已经添加了其他几个面板,并且工作得很好)。其次,框架的布局设置为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!"); 

回答

1

由于@JBNizet建议,null布局不适用于所有AWT组件。

因为我Panel的I被揭去被定位只是一个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之内,以达到相同的效果。

1

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

2)你的问题可能是更好的使用JTextArea与方法append()

3)你有Concurency (in Swing)AWT/Swing的问题是单线程的,并且所有输出到GUI必须包装成invokeLater

4)为更好地帮助您更快地编辑您的问题SSCCE

+0

我以为我在那里有一个关于秋千的评论,但我想我已经离开了它。 **我有AWT的原因。没有摆动** – Qix 2012-03-02 18:25:19

+0

不,这不是一个并发问题。这与它无关。 – Qix 2012-03-02 18:26:43

+0

另外,我更喜欢像我一样对问题进行格式化。为了以防万一,我宁愿让那里的死代码看看是不是另一个我不关注的问题。不管怎么说,还是要谢谢你。 – Qix 2012-03-02 18:27:30