非常简单的问题。我的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!");
答案 0 :(得分:1)
1)今天的GUI使用Swing JComponents
(以J
开头)而不是史前AWT Label
2)对于您的问题,可以更好地使用方法append()
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
内,以达到同样的效果。