Pretty straightforward issue. My Java AWT (not Swing) label is simply not showing up. Most of the following code isn’t even being used (for debugging this issue).
Just a note: this is within a Frame’s constructor (and yes I have added several other panels and such that work just fine). Secondly, the frame’s layout has been set to null.
I’m stumped.
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!");
As @JBNizet suggested,
nulllayouts don’t work with all AWT components.I was thrown off since my
Panels were positioned just fine with anulllayout on myFrame, whereas Labels require a basic layout in order to display. I was tempted to go as far as saying all other components had the same ‘feature’, but another part of my code proved that point wrong:The above code (which is located within the constructor of a class extending
java.awt.Panel) works perfectly.My workaround is to put the label inside another
Panelwith a layout (messy, but it works) and position that panel within theFrameabsolutely to achieve the same effect.