Java 如何在windows上获得透明的jframe?
你知道如何在windows上获得透明的jframe吗?在macOS上,我是通过这些线路得到的Java 如何在windows上获得透明的jframe?,java,swing,jframe,Java,Swing,Jframe,你知道如何在windows上获得透明的jframe吗?在macOS上,我是通过这些线路得到的 frame.setUndecorated(true); frame.setBackground(new Color(1,1,1,1)); 它似乎在windows上不起作用:(我怎么做 MacOS示例 Windows示例 我的代码: frm_languageSelector = new JFrame(); pnl_buttons = new JPanel(); frm_la
frame.setUndecorated(true);
frame.setBackground(new Color(1,1,1,1));
它似乎在windows上不起作用:(我怎么做
MacOS示例
Windows示例
我的代码:
frm_languageSelector = new JFrame();
pnl_buttons = new JPanel();
frm_languageSelector.setUndecorated(true);
frm_languageSelector.setBackground(new Color(0,0,0,0));
frm_languageSelector.setFocusable(true);
frm_languageSelector.setSize(500,100);
frm_languageSelector.setLocationRelativeTo(null);
pnl_buttons.setOpaque(false);
pnl_buttons.setSize(500, 100);
pnl_buttons.setLayout(new GridLayout(1,5));
btn_enUS = new JButton();
btn_enGB = new JButton();
btn_it = new JButton();
btn_fr = new JButton();
btn_de = new JButton();
btn_enUS.setBorderPainted(false);
btn_enGB.setBorderPainted(false);
btn_it.setBorderPainted(false);
btn_fr.setBorderPainted(false);
btn_de.setBorderPainted(false);
btn_enUS.setToolTipText(lang.getWord("pnl_enUS"));
btn_enGB.setToolTipText(lang.getWord("pnl_enGB"));
btn_it.setToolTipText(lang.getWord("pnl_it"));
btn_fr.setToolTipText(lang.getWord("pnl_fr"));
btn_de.setToolTipText(lang.getWord("pnl_de"));
pnl_buttons.add(btn_enUS);
pnl_buttons.add(btn_enGB);
pnl_buttons.add(btn_it);
pnl_buttons.add(btn_fr);
pnl_buttons.add(btn_de);
frm_languageSelector.add(pnl_buttons);
您很可能没有在主JPanel上设置set不透明 这管用,祝你好运
public class TransparentFrame {
private static class InvisibleFrame extends JFrame {
public InvisibleFrame() throws HeadlessException {
setUndecorated(true);
setBackground(new Color(0,0,0,0));
}
}
public static void main(String[] args) {
InvisibleFrame frame = new InvisibleFrame();
JPanel buttons = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10));
buttons.add(new JButton("1"));
buttons.add(new JButton("2"));
JButton exit = new JButton("exit");
exit.addActionListener((e) -> frame.setVisible(false));
buttons.add(exit);
buttons.setOpaque(false);
frame.setContentPane(buttons);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(300, 300, 500, 300);
frame.setVisible(true);
frame.toFront();
}
}
您很可能没有在主JPanel上设置set不透明 这管用,祝你好运
public class TransparentFrame {
private static class InvisibleFrame extends JFrame {
public InvisibleFrame() throws HeadlessException {
setUndecorated(true);
setBackground(new Color(0,0,0,0));
}
}
public static void main(String[] args) {
InvisibleFrame frame = new InvisibleFrame();
JPanel buttons = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10));
buttons.add(new JButton("1"));
buttons.add(new JButton("2"));
JButton exit = new JButton("exit");
exit.addActionListener((e) -> frame.setVisible(false));
buttons.add(exit);
buttons.setOpaque(false);
frame.setContentPane(buttons);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(300, 300, 500, 300);
frame.setVisible(true);
frame.toFront();
}
}
新颜色(1,1,1,1)
为不透明白色。请尝试新颜色(1,1,1,0)
新颜色(1,1,1,1)为不透明白色。请尝试新颜色(1,1,1,0)
这对我很有效。基本上,对于windows,要获得相同的结果,我需要将我的按钮添加到面板,然后将面板添加到框架,而不是将我的按钮直接应用到框架。感谢一件事和同样的事情…我发现是网格布局导致按钮周围出现边框…有什么想法吗?@Monstercat它不是GridLayout
,主要是按钮本身在绘制边框,也许你可以看看仅仅发布一个小的演示代码是不起作用的,否则就很难帮上忙了。@Beowolve我添加了我的代码。在macOS上它可以正常工作,在windows上则不能。我不知道确切的原因是什么不起作用,但我知道在windows上透明不起作用我。基本上,windows要获得相同的结果,我需要将我的按钮添加到面板,然后将面板添加到框架,而不是将我的按钮直接应用到框架。感谢一件事……我发现是网格布局导致了按钮周围的边框……有什么想法吗?@Monstercat这不是网格布局
,主要是正在绘制边界的tons自己,也许可以看一看,只需发布一个小的演示代码就行了,否则很难提供帮助。@Beowolve我添加了我的代码。在macOS上它可以正常工作,在windows上则不行。我不清楚什么不起作用,但我知道在windows上透明不起作用