JFrame
から最大化ボタンと最小化ボタンを削除する必要があります。これを行う方法を提案してください。
import Java.awt.event.WindowAdapter;
import Java.awt.event.WindowEvent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Dlg extends JDialog {
public Dlg(JFrame frame, String str) {
super(frame, str);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
}
public static void main(String[] args) {
try {
Dlg frame = new Dlg(new JFrame(), "No min max buttons");
JPanel panel = new JPanel();
panel.setSize(200, 200);
JLabel lbl = new JLabel("blah blah");
panel.add(lbl);
frame.add(panel);
frame.setSize(400, 400);
frame.setVisible(true);
} catch (IllegalArgumentException e) {
System.exit(0);
}
}
}
これは、フレーム装飾を無効にするために setUndecorated()
を使用する関連する例です。
import Java.awt.EventQueue;
import Java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class FrameTest implements Runnable {
public static void main(String[] args) {
EventQueue.invokeLater(new FrameTest());
}
@Override
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setUndecorated(true);
JPanel panel = new JPanel();
panel.add(new JLabel("Stackoverflow!"));
panel.add(new JButton(new AbstractAction("Close") {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}));
f.add(panel);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
注:最初に スタッカー の回答を編集しましたが、代わりに新しい回答を作成することをお勧めしました。
ユーザーが使用できるウィンドウコントロールをカスタマイズする方法はいくつかあります。
現在、タイトルバーと閉じるボタンを維持したまま、最大化ボタンと最小化ボタンを削除する唯一の方法は、JDialog
の代わりに JFrame
を使用することです。
_import Java.awt.Dimension;
import Java.awt.event.WindowAdapter;
import Java.awt.event.WindowEvent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class DialogDemo {
public static void main(String[] args) {
JDialog dialog = new JDialog(new JFrame(), "No min max buttons");
// necessary as setDefaultCloseOperation(EXIT_ON_CLOSE) is
// not available for JDialogs.
dialog.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
JLabel label = new JLabel("blah blah");
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(400, 400));
panel.add(label);
dialog.add(panel);
dialog.pack();
dialog.setVisible(true);
}
}
_
ダイアログソリューションでは、ショートカットを使用するなどして、ユーザーがウィンドウを最小化および最大化することはできませんが、ウィンドウのサイズを変更する機能は削除されません。
setResizable(false)
を使用すると、最大化ボタンのみが削除されますが、ウィンドウのサイズを変更できなくなります。
最後に、 trashgod で述べたように、 setUndecorated(true)
メソッドはフレーム装飾を無効にし、タイトルバーとウィンドウの端を削除します。これにより、ユーザーがウィンドウをドラッグ、サイズ変更、および閉じることが難しくなりますが、これらのアクションはショートカットキーを使用して実行できるため、不可能ではありません。
あなたはこれを試すことができます:
JFrame loadingDialog = new JFrame();
JLabel label = new JLabel("blah blah");
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(400, 400));
panel.add(label);
loadingDialog.add(panel);
loadingDialog.setUndecorated(true);
loadingDialog.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
loadingDialog.pack();
loadingDialog.setVisible(true);