大家好,我在java中制作了一个swing应用程序,但问题是如何在java中实现透明框架。
我想像附加图像一样进行用户界面设计,但是probem是框架不透明,所以如果该图层上没有组件,它会显示默认颜色。
就像在右侧一样,我想在顶部自由和底部自由部分上将此框架显示为透明,
我使用AWTUtilities,但它对我不起作用。
我该怎么做,请回复,
还给我一个提示,在未修饰的窗口中按标题栏拖动窗口
提前感谢
答案 0 :(得分:3)
透明背景组件
public class TransparentBackground extends Jcomponent {
private JFrame frame;
private Image background;
public TransparentBackground(JFrame frame) {
this.frame = frame;
updateBackground( );
}
public void updateBackground( ) {
try {
Robot rbt = new Robot( );
Toolkit tk = Toolkit.getDefaultToolkit( );
Dimension dim = tk.getScreenSize( );
background = rbt.createScreenCapture(
new Rectangle(0,0,(int)dim.getWidth( ),
(int)dim.getHeight( )));
} catch (Exception ex) {
p(ex.toString( ));
ex.printStackTrace( );
}
}
public void paintComponent(Graphics g) {
Point pos = this.getLocationOnScreen( );
Point offset = new Point(-pos.x,-pos.y);
g.drawImage(background,offset.x,offset.y,null);
}
}
您可以使用简单的main()方法运行此操作,将一些组件放到面板上并将其放入框架中:
public static void main(String[] args) {
JFrame frame = new JFrame("Transparent Window");
TransparentBackground bg = new TransparentBackground(frame);
bg.setLayout(new BorderLayout( ));
JButton button = new JButton("This is a button");
bg.add("North",button);
JLabel label = new JLabel("This is a label");
bg.add("South",label);
frame.getContentPane( ).add("Center",bg);
frame.pack( );
frame.setSize(150,100);
frame.show( );
}