是否可以在Java中创建某种具有框架和边框但没有标题按钮(最小化,恢复,关闭)的Window对象。
当然,我无法使用undecorated
设置。此外,窗口需要:
System
外观以下是一个例子:
答案 0 :(得分:5)
这是关于
带有Compound Borders的未修饰JDialog
,然后您可以创建来自Native OS的similair或更好的边框
使用JPanel
JLabel#opaque(true)
(或GradientPaint
)
或(更好non_focusable
==我的观点)JLabel
已准备好Icon
添加JPanel
/ JLabel
Component Mover / Component Resize(注意,不要将这两个代码混合在一起)@camickr
设置Alpha Transparency
以便在JPanel
/ JLabel
中进行绘画,以获得精彩的look and feel
最简单的方法是JMenuBar
答案 1 :(得分:4)
简短的回答是否定的。
可能更长的答案是,但您需要调查JNI / JNA实现
答案 2 :(得分:2)
试试这个小例子。它将从JFrame中删除(不仅禁用)最小化,最大化和关闭按钮。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Example {
public void buildGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
frame.setResizable(false);
removeButtons(frame);
JPanel panel = new JPanel(new GridBagLayout());
JButton button = new JButton("Exit");
panel.add(button,new GridBagConstraints());
frame.getContentPane().add(panel);
frame.setSize(400,300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent a){
System.exit(0);
}
});
}
public void removeButtons(Component comp) {
if(comp instanceof AbstractButton) {
comp.getParent().remove(comp);
}
if (comp instanceof Container) {
Component[] comps = ((Container)comp).getComponents();
for(int x=0, y=comps.length; x<y; x++) {
removeButtons(comps[x]);
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new Example().buildGUI();
}
});
}
}