Отключить кнопку свертывания JFrame
Я разрабатываю инструмент для моего ноутбука. Я хочу отключить кнопку свертывания в JFrame. Я уже отключил кнопку максимизации и закрытия.
Вот код для отключения кнопки "Развернуть" и "Закрыть":
JFrame frame = new JFrame();
frame.setResizable(false); //Disable the Resize Button
// Disable the Close button
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
Подскажите пожалуйста, как отключить кнопку сворачивания.
5 ответов
Как сказал @MadProgrammer (+1 к нему), это определенно не очень хорошая идея, которую вы бы хотели
использовать
JDialog
и позвонитьsetDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
чтобы убедиться, что он не может быть закрыт.Вы также можете использовать
JWindow
(+1 к @MM) или позвонитеsetUndecorated(true);
на вашеJFrame
пример.
Или вы можете добавить свой собственный WindowAdapater
сделать JFrame
не минимизируемый и т. д. путем переопределения windowIconified(..)
и звонит setState(JFrame.NORMAL);
изнутри метода:
//necessary imports
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Test {
/**
* Default constructor for Test.class
*/
public Test() {
initComponents();
}
public static void main(String[] args) {
/**
* Create GUI and components on Event-Dispatch-Thread
*/
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Test test = new Test();
}
});
}
private final JFrame frame = new JFrame();
/**
* Initialize GUI and components (including ActionListeners etc)
*/
private void initComponents() {
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setResizable(false);
frame.addWindowListener(getWindowAdapter());
//pack frame (size JFrame to match preferred sizes of added components and set visible
frame.pack();
frame.setVisible(true);
}
private WindowAdapter getWindowAdapter() {
return new WindowAdapter() {
@Override
public void windowClosing(WindowEvent we) {//overrode to show message
super.windowClosing(we);
JOptionPane.showMessageDialog(frame, "Cant Exit");
}
@Override
public void windowIconified(WindowEvent we) {
frame.setState(JFrame.NORMAL);
JOptionPane.showMessageDialog(frame, "Cant Minimize");
}
};
}
}
Как правило, вы не можете, то, что вы можете сделать, это использовать JDialog
вместо JFrame
Если вы не хотите разрешать использование действий пользователя JWindow
,
Вы можете попытаться изменить свой тип JFrame на UTILITY. Тогда вы не увидите как минимизировать btn, так и максимизировать btn в вашей программе.
Я бы порекомендовал вам использовать jframe.setUndecorated(true)
поскольку вы не используете какие-либо события окна и не хотите изменять размер приложения. Используйте MotionPanel, который я сделал, если вы хотите переместить панель.