18

から最大化ボタンと最小化ボタンを削除する必要がありますJFrame。これを行う方法を提案してください。

4

4 に答える 4

15

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);
    }
}
于 2010-08-20T20:31:55.323 に答える
10

注:最初はスタッカーの回答を編集しましたが、代わりに新しい回答を作成することをお勧めしました。

ユーザーが使用できるウィンドウコントロールをカスタマイズする方法はいくつかあります。

現在、タイトルバーと閉じるボタンを維持したまま、最大化ボタンと最小化ボタンを削除する唯一の方法は、 :の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)メソッドはフレームの装飾を無効にし、タイトルバーとウィンドウの端を削除します。これにより、ユーザーがウィンドウをドラッグ、サイズ変更、および閉じることが難しくなりますが、これらのアクションはショートカットキーを使用して実行できるため、不可能ではありません。

于 2012-05-21T10:56:43.627 に答える
5
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);
        }
    }
}
于 2010-04-19T06:01:06.030 に答える
-1

あなたはこれを試すことができます:

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);
于 2018-04-02T17:07:16.040 に答える