Java提供了不同的功能,通过这些功能我们可以控制窗口或框架的半透明性。要控制框架的不透明度,不能装饰框架。帧的不透明度是对帧或组件的半透明性的度量。 在Java中,我们可以通过两种方式创建成型窗口,首先是使用组件组件的AWutilities。总和awt package AWTUtilities类有一个函数——设置窗口形状的SetWindowsShape(窗口w,形状s),第二个函数是使用setShape(形状s),将窗口形状设置为指定的形状。 在这篇文章中,我们将讨论窗户的均匀半透明性。 使用的方法:
null
- 设置窗口形状(窗口w,形状s): 将窗口w的形状设置为指定的形状s
- 设置形状(s形): 将窗口的形状设置为指定的形状
- 设置不透明度(浮动f): 设置帧的不透明度值
1.使用JSlider创建半透明框架并控制其半透明性的程序
JAVA
// Java program to create a // translucent frame and control // its translucency with // the help of a JSlider import javax.swing.event.*; import java.awt.*; import javax.swing.*; class solveit extends JFrame implements ChangeListener { // frame static JFrame f; // slider static JSlider b; // label static JLabel l; // main class public static void main(String[] args) { // create a new frame f = new JFrame( "translucent window" ); // create a object solveit s = new solveit(); // create label l = new JLabel(); // create a panel JPanel p = new JPanel(); // create a slider b = new JSlider( 0 , 100 , 100 ); // paint the ticks and tracks b.setPaintTrack( true ); b.setPaintTicks( true ); b.setPaintLabels( true ); // set spacing b.setMajorTickSpacing( 20 ); b.setMinorTickSpacing( 5 ); // setChangeListener b.addChangeListener(s); // add slider to panel p.add(b); p.add(l); f.add(p); // set the text of label l.setText( "Opacity value is =" + b.getValue()); // set the size of frame f.setSize( 300 , 300 ); // decorated frame's opacity cant be set // so make the frame undecorated f.setUndecorated( true ); // set opacity value for the window f.setOpacity(b.getValue() * 0 .01f); f.setLocation( 500 , 300 ); f.show(); } // if opacity value is changed public void stateChanged(ChangeEvent e) { l.setText( "opacity value is =" + b.getValue()); // set opacity value for the window f.setOpacity(b.getValue() * 0 .01f); } } |
输出:
2.编程以创建一个成型的半透明窗口(使用AWTUtilities),并使用滑块控制其半透明性
JAVA
// Java Program to create a shaped translucent // window (using AWTUtilities)and // control its translucency using a slider import javax.swing.event.*; import java.awt.*; import javax.swing.*; import java.awt.geom.*; import com.sun.awt.AWTUtilities; class solveit extends JFrame implements ChangeListener { // frame static JFrame f; // slider static JSlider b; // label static JLabel l; // main class public static void main(String[] args) { // create a new frame f = new JFrame( "translucent window" ); // create a object solveit s = new solveit(); // create label l = new JLabel(); // create a panel JPanel p = new JPanel(); // create a slider b = new JSlider( 0 , 100 , 100 ); // paint the ticks and tracks b.setPaintTrack( true ); b.setPaintTicks( true ); b.setPaintLabels( true ); // set spacing b.setMajorTickSpacing( 20 ); b.setMinorTickSpacing( 5 ); // setChangeListener b.addChangeListener(s); // add slider to panel p.add(b); p.add(l); f.add(p); // set the text of label l.setText( "Opacity value is =" + b.getValue()); // set the size of frame f.setSize( 300 , 300 ); // decorated frame's opacity cant be set so make the frame undecorated f.setUndecorated( true ); // set opacity value for the window f.setOpacity(b.getValue() * 0 .01f); // set window shape using AWTUtilities class AWTUtilities.setWindowShape(f, new Ellipse2D.Float(20f, -30f, 250 .0f, 150 .0f)); f.setLocation( 500 , 300 ); f.show(); } // if opacity value is changed public void stateChanged(ChangeEvent e) { l.setText( "opacity value is =" + b.getValue()); // set opacity value for the window f.setOpacity(b.getValue() * 0 .01f); } } |
输出:
3.编程创建一个成型的半透明窗口(使用setShape),并使用滑块控制其半透明性
JAVA
// Program to create a shaped translucent // window (using setShape) // and control its translucency using a slider import javax.swing.event.*; import java.awt.*; import javax.swing.*; import java.awt.geom.*; import com.sun.awt.AWTUtilities; class solveit extends JFrame implements ChangeListener { // frame static JFrame f; // slider static JSlider b; // label static JLabel l; // main class public static void main(String[] args) { // create a new frame f = new JFrame( "translucent window" ); // create a object solveit s = new solveit(); // create label l = new JLabel(); // create a panel JPanel p = new JPanel(); // create a slider b = new JSlider( 0 , 100 , 100 ); // paint the ticks and tracks b.setPaintTrack( true ); b.setPaintTicks( true ); b.setPaintLabels( true ); // set spacing b.setMajorTickSpacing( 20 ); b.setMinorTickSpacing( 5 ); // setChangeListener b.addChangeListener(s); // add slider to panel p.add(b); p.add(l); f.add(p); // set the text of label l.setText( "Opacity value is =" + b.getValue()); // set the size of frame f.setSize( 300 , 300 ); // decorated frame's opacity cant be set so make the frame undecorated f.setUndecorated( true ); // set opacity value for the window f.setOpacity(b.getValue() * 0 .01f); // set window shape f.setShape( new Ellipse2D.Float(20f, -30f, 250 .0f, 150 .0f)); f.setLocation( 500 , 300 ); f.show(); } // if opacity value is changed public void stateChanged(ChangeEvent e) { l.setText( "opacity value is =" + b.getValue()); // set opacity value for the window f.setOpacity(b.getValue() * 0 .01f); } } |
输出:
注: 以上程序可能无法在联机编译器中运行,请使用脱机IDE。建议使用最新版本的java来运行上述程序,如果使用较旧版本的java,用户可能会遇到问题。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END