我创建了一个包含句子的文件.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
,因为我需要透明度。
答案 0 :(得分:1)
这很可能是因为该文件不在Java期望的字符集中。 InputStreamReader构造函数可以接受Charset绕过平台默认值。使用
Charset.forName(...)
作为参数,您可以尝试不同的参数,看看是否有效(标准字符集可以在javadoc中找到)。
或者,您可以使用Windows下的Notepad ++(以及大量其他编辑器,只是我个人最喜欢的)来调查此问题,以便使用不同的字符集显示文本并在必要时进行转换。
JVM的默认字符集由
返回Charset.defaultCharset()
根据您的版本提供一些警告(请参阅this question)。
答案 1 :(得分:0)
我终于发现了什么是错的。
当我删除设置字体tahoma的行时,它没有正方形!我不知道为什么,但这个字体不允许我在JLabel中设置图片和文字。
我认为你给出了正确答案,但我在记事本++中没有发现我的.txt有什么问题
感谢。