Прозрачный фон в jframe, но с рамкой окна и т. д.
Поэтому я могу попытаться задать свою проблему, но ради вас и ради себя я создал простое изображение в фотошопе, чтобы попытаться рассказать вам, чего я хочу достичь:
Я пытался работать с Opaque в AWTUtilities, но, похоже, это не сработало. Ребята, вы не представляете, как мне этого добиться?
Мне нужна родная граница окна, чтобы я мог перетаскивать окно, а также нужна функция изменения размера.
заранее спасибо
1 ответ
Решение
Для прозрачного / трансулянтного JFrame
см. здесь: http://docs.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html котором объясняется прозрачность Windows в Java.
Вам нужно позвонить setOpacity()
,
Вот также маленький пример:
import java.awt.*;
import javax.swing.*;
import static java.awt.GraphicsDevice.WindowTranslucency.*;
public class TranslucentWindowDemo extends JFrame {
public TranslucentWindowDemo() {
super("TranslucentWindow");
setLayout(new GridBagLayout());
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Add a sample button.
add(new JButton("I am a Button"));
}
public static void main(String[] args) {
// Determine if the GraphicsDevice supports translucency.
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
//If translucent windows aren't supported, exit.
if (!gd.isWindowTranslucencySupported(TRANSLUCENT)) {
System.err.println(
"Translucency is not supported");
System.exit(0);
}
JFrame.setDefaultLookAndFeelDecorated(true);
// Create the GUI on the event-dispatching thread
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
TranslucentWindowDemo tw = new TranslucentWindowDemo();
// Set the window to 55% opaque (45% translucent).
tw.setOpacity(0.55f);
// Display the window.
tw.setVisible(true);
}
});
}
}