读书人

Java基础之美妙Swing界面

发布时间: 2014-01-12 00:03:16 作者: rapoo

Java基础之美观Swing界面

让窗体边框透明

setUndecorated(true);

?

让整个窗体变透明包括组件也透明//this.setUndecorated(true);必须写在下面两行代码前

?

com.sun.awt.AWTUtilities.setWindowOpacity(this,0.5f);//传入的参数是操作的JFrame,与要透明的比例

//只让窗体透明组件透明

com.sun.awt.AWTUtilities.setWindowOpaque(this, false);

?

?

让JPanel透明

setOpaque(false)

?

让按钮透明 ?//这个方法可以用来不同形状的按钮

?jb.setToolTipText("注释");这个是给按钮假如注释

jb.setContentAreaFilled(false);//让按钮的边框透明掉

jb.setBorderPainted(false);//让按钮的body透明掉

//设置按钮的图片,

对于JButton

ImageIcon im=new ImgeIcon("图片路径");/、按照这种方法实例化是哪个对象,传入下面方法

?

jb.setIcon(im1);//设置原始显示图片

jb.setPressedIcon(im2);//设置点击后的显示图片

jb.setRolloverIcon(im2); //设置鼠标进入时候显示的图片

对于JRadioButton

JRadioButton jb=new JRadioBUtton(new ImageIcon("直线.png"));//原始显示图片

?

jra.setRolloverIcon(new ImageIcon("直线1.png"));//鼠标进入后显示图片

jra.setSelectedIcon(new ImageIcon("直线2.png"));//选中后显示的图片

?

?

?

?

/***下面提供两种方法来实现界面到的背景

*********第一种**********

//首先实现一个图片标签

?

ImageIcon img=new ImageIcon("背景.png");

JLabel jl=new JLabel(img);

//添加图片至Frame的第二层

jf.getLayeredPane().add(jl, new Integer(Integer.MIN_VALUE))

//把标签的大小位置设置为图片刚好填充整个面

jl.setBounds(0,0,img.getIconWidth(), img.getIconHeight());

//将上面的面板设置透明

Container P4=jf.getContentPane(); ?

((JComponent) P4).setOpaque(false);

//如果界面上加载了其他JPanel的话,将其设置透明

jpnorth.setOpaque(false);

jpwest.setOpaque(false);

jpsouth.setOpaque(false);

jpcenter.setOpaque(false);

*********第二种**********

//直接重写JPanel中的paint

?

JPanel jp=new JPanel(){

? ? ? ? ? ? ? ?//重写paintComponent

public void paintComponent(Graphics g){

ImageIcon im=new ImageIcon("背景.png");

? ? ? ? g.drawImage(im.getImage(),0,0,375,295,null);//把图片按照定义的大小画上去

? ? ? ? super.paintComponent(g);//调用父类的方法

}

};

jp.setsetOpaque(false)//设置透明,这一步不能少

?/**************************************************第二部分********************************************************************/

1,首先介绍JFrame的层次

最底层是 RootPane,

然后是 LayeredPane

再上面就是 ContentPane//JButton,JTextField等组件是加在这一层

最顶层是 GlassPane//这层透明

我们所用的JFrame中的add();方法就同于JFrame.get?ContentPane.add();

2,介绍一些窗口小技巧

去掉界面的边框 ? ? ?setUndecorated(true);(这样的话,最大化,最小化方法得自己写了)

?

做一个圆角的窗体com.sun.awt.AWTUtilities.setWindowShape(jf, ?new RoundRectangle2D.Double(0.0D, 0.0D, jf.getWidth(), ?jf.getHeight(), 6.0D, 6.0D));其中的jf参数就是JFrame实例化的对象(首先得去掉边框)

?

设置边框的风格 ?UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());//这个是设置当前系统的边

?

jf.setLocationRelativeTo(null);//窗体居中显示

?

jf.setAlwaysOnTop(true);让窗体永远在电脑显示的所有窗体的最前面

3,加载flash文件作为背景

首先你得先下载几个文件http://pan.baidu.com/disk/home#dir/path=%2F%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E8%B5%84%E6%96%99

打开连接后下载DJNativeSwing-SWT-1-0-2-20131010文件

之后打开你得eclips右键点击你的工程文件夹,点击buildpath->confingure path->labiries->add external JARS打开你刚才下载的包,选中所有的JARs,点击ok导入进去

代码如下

Java代码
  • import?javax.swing.JFrame;??
  • import?javax.swing.UnsupportedLookAndFeelException;??
  • import?chrriis.common.UIUtils;??
  • import?chrriis.dj.nativeswing.swtimpl.NativeInterface;??
  • import?chrriis.dj.nativeswing.swtimpl.components.JFlashPlayer;??
  • ??
  • ??
  • public?class?TSet?extends?JFrame?{??
  • public?void?UI()throws?ClassNotFoundException,?InstantiationException,?IllegalAccessException,?UnsupportedLookAndFeelException{??
  • ????//***设置窗体??
  • ????this.setSize(380,292);??
  • ????this.setLocationRelativeTo(null);//居中显示??
  • ????this.setDefaultCloseOperation(3);//点击关闭后退出??
  • ????//***创建flash??
  • ????JFlashPlayer?flash=new?JFlashPlayer();??
  • ????flash.load("afternoon.swf");//载入文件??
  • ????this.add(flash);??
  • ????//this.setUndecorated(true);去掉边框??
  • ????this.setVisible(true);??
  • }??
  • ????/**??
  • ?????*?@param?args??
  • ?????*/??
  • ????public?static?void?main(String[]?args)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????//下面联行代码是初始化接口??
  • ???????????UIUtils.setPreferredLookAndFeel();??
  • ???????????NativeInterface.open();??
  • ????????//必须使用线程来调用这个方法??
  • ????????java.awt.EventQueue.invokeLater(new?Runnable()?{??
  • ???????????????public?void?run()?{??
  • ??????????????????try?{??
  • ????????????????????new?TSet().UI();//调用方法??
  • ????????????????}?catch?(ClassNotFoundException?e)?{??
  • ????????????????????//?TODO?Auto-generated?catch?block??
  • ????????????????????e.printStackTrace();??
  • ????????????????}?catch?(InstantiationException?e)?{??
  • ????????????????????//?TODO?Auto-generated?catch?block??
  • ????????????????????e.printStackTrace();??
  • ????????????????}?catch?(IllegalAccessException?e)?{??
  • ????????????????????//?TODO?Auto-generated?catch?block??
  • ????????????????????e.printStackTrace();??
  • ????????????????}?catch?(UnsupportedLookAndFeelException?e)?{??
  • ????????????????????//?TODO?Auto-generated?catch?block??
  • ????????????????????e.printStackTrace();??
  • ????????????????}??
  • ???????????????}??
  • ???????????});??
  • ??
  • ????}??
  • ??
  • }??

    ?

    效果图不好发,发上来是静态的,自己下载一个swf文件测试一下就是

  • 读书人网 >编程

    热点推荐