Java jframe убрать кнопки

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

Мне нужно удалить кнопки максимизации и минимизации из JFrame . Подскажите, пожалуйста, как это сделать.

в нем говорится об использовании JDialog, в myeclipse я импортирую java.awt. *, но JDialog не распознается. любая помощь по этому поводу? — silverkid

JDialog и JFrame оба в java.swing упаковка. Тебе нужно import java.swing.* . — Matthew T. Staebler

@Aeth: на самом деле это javax.swing.* . — Joachim Sauer

4 ответы

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); >> > 

Каков твой ответ? Вы не объясняете, что делаете, и я не вижу, где вы удаляете кнопки min / max из JFrame. Хотя теперь я понимаю, к чему вы клоните, но мне потребовалась минута или две, чтобы задуматься, как это вообще был ответ. — Лодувийк

Остерегайтесь, это решение значительно усложняет фокусировку окна. Это диалоговое окно, что означает, что оно не будет отображаться как открытая программа в Windows. Если пользователь фокусирует другое окно, например веб-браузер, чтобы перефокусировать диалоговое окно, пользователю придется свернуть все другие программы. — Том Беррис

Читайте также:  This keyword in typescript

Вот связанный пример с использованием 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); > > 

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

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

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

Наконец, как упоминалось мусорный бог, setUndecorated(true) отключит оформление фрейма, удалив строку заголовка и края окна. Это усложняет пользователям перетаскивание, изменение размера и закрытие окна, хотя и не является невозможным, поскольку эти действия по-прежнему можно выполнять с помощью сочетаний клавиш.

Источник

Убрать контрольные кнопки сворачивания/разворачивания и закрытия

Добрый вечер, всем.
Подскажите, пожалуйста, как убрать контрольные кнопки сворачивания/разворачивания и закрытия. Работаю в NetBeans 7.
Заранее спасибо.

Как убрать кнопки сворачивания, закрытия с дочерней MDI формы
Всем привет. Имеется одна главная форма и несколько MDI дочерних. Все хорошо работает, открывается.

После удаления compiz пропали кнопки сворачивания и разворачивания окон
поставил я себе на Минт компиз. работал он у меня фигово и я решил его снести. вроде все пакеты я.

как сместить стандартные кнопки закрытия и сворачивания окна вниз?
возможно ли такое? в идеале должно быть овальное окно с кнопками закрыть и свернуть внизу справа.

Эффект Сворачивания и Разворачивания формы
Всем доброго время суток. Копаясь на просторах интернета увидел интересный код и решил выложить.

JFrame newl = new NewJFrame(); newl.dispose(); newl.setUndecorated(true); newl.setVisible(true);

korvinus,
dispose — закрывает фрейм
setundecorated — убирает всю рамку и контрольные кнопки
setVisible — для того, чтобы установить видимость фрейма.
Но мне не это нужно, нужно сделать так, чтобы контрольные кнопки — свернуть и закрыть были неактивными или невидимыми.

setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
JFrame f = new JFrame(); f.addWindowStateListener(new WindowStateListener(){ @Override public void windowStateChanged(WindowEvent e){ f.setState(JFrame.NORMAL); } });

Можете подсказать мне как сделать так, чтобы при нажатии на кнопку сворачивания окна срабатывала функция dispose() и чтобы на панель не уходило?

Нашел решение — надо проверить, произошло ли событие перехода в режим ICONIFIED и вмсесто сворачивания вызвать ту функцию, котрая нужна в данный момент. Например я сделал так :
если произошло событие прехода в режим фрейма — ICONIFIRD, то вызвать fr.dispose() и все вот так.

Добавлено через 1 минуту
Кстати, пробовал и setUndecorated(true) — тоже отличный варинт, но мне достаточно того, что сделал.
Всем спасибо.

Сворачивания и разворачивания формы с определением
Здраствуйте и еще нужно решения одного вопроса а именно. Как опредеелить в какой момент.

Out of range после сворачивания/разворачивания программы DOS
Столкнулся с проблемой, в интернете искал, не нашел решения. Работаю в дос-программе.

Max Payne 3 — после сворачивания-разворачивания игры фпс падает до 30 и больше не поднимается
Есть один вопрос, связанный с Max Payne 3. Играю на максимальных настройках, в игре 55-60 фпс, но.

Источник

Как скрыть стандартные кнопки сворачивания / разворачивания и закрытия в окне JFrame в Java?

Я хотел бы знать, можно ли создать окно Jframe, которое не имеет кнопок максимизации/минимизации по умолчанию (-) и close (x)! Я добавил пользовательские кнопки на каждом фрейме, чтобы пользователь не должен был вмешиваться со стандартными в верхнем правом углу окна.

Конечно, теперь ему придется возиться с вашими пользовательскими кнопками с небольшими ошибками в юзабилити.

5 ответов

Вы можете использовать JWindow, потому что по умолчанию un_decorated, но вы можете setUndecorated() для JFrame/JDialog

setDefaultCloseOperations() не будет скрывать кнопки, он просто меняет поведение приложения при закрытии окна.

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

@Inerdial, который может быть немного сложным, по умолчанию лучше использовать un_decorated JFrame (можно использовать parent) как JDialog / JWindow, в случае, если вам требуется второе / другое всплывающее окно, тогда JWindow лучше всего вообще

@mKorbel Любое неокрашенное окно, потребует индивидуальной реализации всей строки заголовка. Не имеет значения , будь то JWindow или JFrame с установленным флагом в действительности. ( JFrame действительно будет лучше в качестве корневого окна из-за EXIT_ON_CLOSE .)

Используйте JFrame.setDefaultLookAndFeelDecorated. Возможно, это не то, что вам нужно, но doc говорит,

Предоставляет подсказку о том, должны ли новые созданные JFrames их оконные украшения (например, границы, виджеты, чтобы закрыть окно, название. ), обеспечиваемые текущим внешним видом.

JFrame frame = new JFrame("Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(100, 100); frame.setUndecorated(true); frame.getRootPane().setWindowDecorationStyle(JRootPane.NONE); frame.setVisible(true); 

Это приведет к удалению всей панели заголовка. Также посмотрите на thread.

В противном случае используйте JWindows.

Строка заголовка в окне полностью исчезла, поэтому побочным эффектом является то, что пользователь не может переместить окно, перетаскивая его в строку заголовка или изменив размер окна.

Источник

Русские Блоги

Как убрать кнопку максимизации сворачивания и кнопку закрытия на JFrame

Ключевое слово : удалить максимизацию в jframe

До JDK1.4 у нас был только один способ удалить строку заголовка окна, то есть использовать JWindow напрямую и использовать JWindow вместо JFrame. Но те, кто использовал JWindow, должны знать, что JWindow не отображается на панели задач операционной системы, поэтому мы не можем переключиться на это окно между несколькими окнами.

Использование JWindow — это также способ, которым многие люди знают, чтобы удалить строку заголовка. Но начиная с Java 1.4, появился новый способ его использования, давайте посмотрим.

Теперь мы создаем класс и наследуем от JFrame,
public class DecoratedFrame extends JFrame <
public DecoratedFrame() <
this.getContentPane().add(new JLabel(«Just a test.»));
this.setUndecorated (true); // удаляем оформление окна
this.getRootPane (). setWindowDecorationStyle (JRootPane.NONE); // Использовать указанный стиль оформления окна
this.setSize(300,150);
>
public static void main(String[] args) <
JFrame frame = new DecoratedFrame();
frame.setVisible(true);
>
>

Посмотрите на две строки с комментариями. Чтобы удалить строку заголовка, используйте код этих двух строк: первая строка удаляет оформление окна, а вторая строка определяет стиль головного убора. Здесь вы можете назначить следующий стиль оформления окна, вызвав метод this.getRootPane (). SetWindowDecorationStyle ():

NONE без декораций (т.е. удалить строку заголовка)
РАМА обычный стиль окна
PLAIN_DIALOG простой стиль диалога
INFORMATION_DIALOG стиль информационного диалога
ERROR_DIALOG стиль диалога ошибок
COLOR_CHOOSER_DIALOG Стиль диалога выбора цвета
Стиль диалога выбора файла FILE_CHOOSER_DIALOG
QUESTION_DIALOG стиль диалога вопросов
WARNING_DIALOG стиль диалога предупреждения

При использовании Jframes обычно будет строка заголовка, а также кнопки свертывания, максимизации, закрытия кнопок, а также реализована функция перетаскивания формы.
В этом случае это окажет большое влияние на нашу индивидуально оформленную форму.

1) Чтобы удалить строку заголовка:
jFrame.setUndecorated(true);
// Таким образом, оформление окна в Jframe может быть удалено,

2) Снимите строку заголовка, нам, возможно, придется предоставить программу для предоставления кода, чтобы минимизировать, развернуть, закрыть операции, как этого добиться?
Просто добавьте MouseListener к кнопке,
Звоните мышкой

jFrame.setExtendedState (jFrame.ICONIFIED); // Минимизировать

if(jFrame.getExtendedState() != jFrame.MAXIMIZED_BOTH)
jFrame.setExtendedState(jFrame.MAXIMIZED_BOTH);
else
jFrame.setExtendedState(jFrame.NORMAL);
// максимальное или нормальное состояние

System.exit(0);
// закрыть, выйти из программы

3) Чтобы перетащить форму:
Просто добавьте следующий код для компонента в форме:

Вызов setDragable () при инициализации компонента позволяет компоненту специально перетаскивать функциональность формы. Поскольку может быть фоновое изображение, метод рисования может быть переопределен. Вы не можете вызвать setDragable () в методе рисования.

 Point loc = null; 
Point tmp = null;
boolean isDragged = false;
private void setDragable() <
this.addMouseListener(new java.awt.event.MouseAdapter() <
public void mouseReleased(java.awt.event.MouseEvent e) <
isDragged = false;
jFrame.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
>
public void mousePressed(java.awt.event.MouseEvent e) <
tmp = new Point(e.getX(), e.getY());
isDragged = true;
jFrame.setCursor(new Cursor(Cursor.MOVE_CURSOR));
>
>);
this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() <
public void mouseDragged(java.awt.event.MouseEvent e) <
if(isDragged) <
loc = new Point(jFrame.getLocation().x + e.getX() - tmp.x,
jFrame.getLocation().y + e.getY() - tmp.y);
jFrame.setLocation(loc);
>
> >);
>

Источник

Оцените статью