我的文字和我的Jlabel中的图片之间的正方形[_]

时间:2014-05-07 13:19:39

标签: java swing jlabel

我创建了一个包含句子的文件.txt

我想用这句话和图片设置一个Jlabel .gif

所以我这样做了:

(我用我的.txt的路径和我的图片的路径声明了2个字符串)

然后我要求设置它:

{
        ZoneAlerte1 = new JLabel();
        getContentPane().add(ZoneAlerte1);
        ZoneAlerte1.setText(new UTIL_LireFichierTXT().getText(MessageTest)); 
        ZoneAlerte1.setFont(new java.awt.Font("Tahoma",0,12));
        ZoneAlerte1.setIcon(new ImageIcon(Icon));   
        ZoneAlerte1.setBounds(400, 200, 300, 40);
        ZoneAlerte1.setVisible(true);


}

事情是:当我运行我的程序时,标签包含图片和我的文字,但在它们之间有一个小方块,就好像我的句子中有一些未知的字符。

所以我试着替换这一行:

ZoneAlerte1.setText(new UTIL_LireFichierTXT().getText(MessageTest));

ZoneAlerte1.setText("hello");

它完美无缺,没有正方形

然后我猜这个问题来自于这个叫做.txt的方法:

public class UTIL_LireFichierTXT {
    public String chaine="";
    public String fichier ="";
    public static void main(String[] args){

    }


public String getText(String path){
            fichier=path;

        //lecture du fichier texte  
        try
        {
            InputStream ips=new FileInputStream(fichier); 
            InputStreamReader ipsr=new InputStreamReader(ips);
            BufferedReader br=new BufferedReader(ipsr);
            String ligne;
            while ((ligne=br.readLine())!=null)
            {
                //System.out.println(ligne);
                chaine+=ligne+"\n";
            }
            br.close(); 
            //System.out.println(chaine);
            return chaine;
        }       
        catch (Exception e)
        {

        }
        return chaine;

        }
    }

问题不是来自我的.txt或标签,因为当我做同样的事情(设置我的文字而不设置图片)时,它没有正方形。

实际上它很奇怪,因为:

Jlabel +此方法设置.txt无方块

Jlabel +图片+此方法:

Jlabel +图片:无方块

Jlabel +图片+ set.Text("Hello!")

提前致谢。

PS:我使用Jlabel代替JTextPane,因为我需要透明度。

2 个答案:

答案 0 :(得分:1)

这很可能是因为该文件不在Java期望的字符集中。 InputStreamReader构造函数可以接受Charset绕过平台默认值。使用

Charset.forName(...) 

作为参数,您可以尝试不同的参数,看看是否有效(标准字符集可以在javadoc中找到)。

或者,您可以使用Windows下的Notepad ++(以及大量其他编辑器,只是我个人最喜欢的)来调查此问题,以便使用不同的字符集显示文本并在必要时进行转换。

JVM的默认字符集由

返回
Charset.defaultCharset()

根据您的版本提供一些警告(请参阅this question)。

答案 1 :(得分:0)

我终于发现了什么是错的。

当我删除设置字体tahoma的行时,它没有正方形!我不知道为什么,但这个字体不允许我在JLabel中设置图片和文字。

我认为你给出了正确答案,但我在记事本++中没有发现我的.txt有什么问题

感谢。