一、中文乱码问题
1.组件乱码
描述说明
有可能使用错了组件,比如今天用列表框时,我就用了awt的LIst组件,结果,标题上的中文能正常显示,按钮上的中文却是方框,出现乱码。 如右所示:
原因及解决
原因:因为所用组件是awt的,而awt对中文的支持不太好,且eclipse(or IDEA)不能很好的调用本地汉字库,所以导致这种情况的出现。
解决:
- 打包成jar包再运行,就可以调用本地字库;
- 若想直接在编译器通过,则需放弃awt组件,使用swing组件。如将Button改成JButton,List改为JList
二、绘制图像或消息时不显示
1.绘制图片无显示
描述说明
如绘制背景图片时,明明“看似”都对,但就是保错或窗体一片空白。像这样:
原因及解决
可能的原因:
- 跟绘制有关的类名写错了
public void paintComponent(Graphics g) {
super.paintComponent(g);
//下面这行是为了背景图片可以跟随窗口自行调整大小,可以自己设置成固定大小
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(),this);
}
这个类很容易与 paintComponents类弄混,特别是代码提示时它们都在一起,一定要注意!
- 图片路径写错了(报错空指针)
//下面是直接使用绝对路径获取图片
//imageIcon = new ImageIcon("D:\\Project\\ideaProject\\BlackHorseJavaWeb\\heima_jdbc\\src\\Schoolwork\\GoBang\\b1.png");
//下面则是使用url地址获取图片; 注意 ./ 后的是指当前类同级的文件,即是从当前类的父目录开始算起的
imageIcon = new ImageIcon(this.getClass().getResource("./b6.jpg"));
img = imageIcon.getImage();
一般有两种方式获取,一种是使用路径(此处我用的是绝对路径,相对路径总是失败_)获取图片;另一种则是使用url地址获取。两者不能混淆
- 使用了空布局但没给组件加 setBounds( )
在空布局,所有组件or面板都要使用setBounds才能显示出来