刚接触JAVA不久,在编写过程中总会遇到各种各样的问题,怕自己一转身又给忘了,还是记录下来吧!方便以后再捡起来复习复习。等以后技术成熟了,也可以回来看看。
以后要是再来看自己现在写的代码,可千万不要笑话自己呀!哈哈
首先放出QQ原图,和我做出来的效果图:
原界面
仿界面
头像只是个背景!
一、下面是编写过程中到的一些问题,以及解决办法。
Q1:怎么样做到,在容器中定位组件能像在做网页一样随意的定位?
A:利用setBounds(x,y,width,height); x:组件在容器X轴上的起点 ;y:组件在容器Y轴上的起点; width:组件的宽度 ;height:组件的高度;最后取消掉容器的布局。
jp2.add(jb);
jb.setBounds(138, 105, 194,30);
jp2.setLayout(null);
Q2:JFrame中如何设置背景图片?
A:需要重写paint()方法,值得注意的是不能直接重写JFrame的paint()方法因为这个方法没有使用二次缓存机制所以在paint的时候,会把内部的组件盖住。所以要弄一个panel,把其他组件放在这个panel上,然后重写这个panel的paintComponent方法。
直接重写会造成Java的组件不显示,只有鼠标移上去或者是点击之后,组件才会显现出来。
class MyPanel extends JPanel
{
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(northImage.getImage(), 0, 5, this);
}
}
class MyPanel2 extends JPanel
{
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(backGround.getImage(), 0, 4, this);
}
}
二、关于设置swing皮肤
我用的是windows风格的皮肤,只需要在main方法中加入以下代码即可:
try{
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}catch(Exception e){
e.printStackTrace();
}
更多皮肤的使用方法,还在研究中...