Как я удаляю максимизирование и кнопки свертывания окна от JFrame?

Существуют сотни возможностей, но проще говоря, вы можете получить возвращаемое значение mail() и отобразить содержимое в соответствии с этим:

$success = mail('...');

form.php

if($success) {
    echo 'Thank you!';
} else {
    // output form here
}
[115 Конечно, вы можете просто установить флаг в true и в своем обработчике форм, но это слишком широко, чтобы объяснить здесь.

17
задан mKorbel 21 May 2012 в 11:42
поделиться

3 ответа

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);
        }
    }
}
6
ответ дан 30 November 2019 в 12:43
поделиться

Примечание. Сначала я отредактировал ответ stacker , но было предложено создать вместо него новый ответ.

Есть несколько способов настроить элементы управления окнами, доступные вашим пользователям.

В настоящее время единственный способ удалить кнопки «Развернуть» и «Свернуть», сохраняя строку заголовка и кнопку закрытия, - это использовать 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) отключит декорации рамки, удаляя строку заголовка и края окна. Это затрудняет пользователям перетаскивание, изменение размера и закрытие окна, хотя и не является невозможным, поскольку эти действия по-прежнему можно выполнять с помощью сочетаний клавиш.

9
ответ дан 30 November 2019 в 12:43
поделиться

Вот связанный пример использования setUndecorated () для отключения декораций кадра.

alt text

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);
    }
}
14
ответ дан 30 November 2019 в 12:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: