Приложение, которое я разрабатываю, — это игра. Что я хочу сделать, так это иметь JPanels, которые появляются в JFrame, как окно текста или сообщения, а затем исчезают, когда они больше не используются. Я разработал эти панели JPanel в Netbeans как внешние классы и хочу иметь возможность вызывать их в методе actionPerformed(). JOptionPanes или другие всплывающие диалоговые окна не подходят, потому что они отвлекают внимание от игры. Я также видел, как кто-то предложил CardLayout в аналогичном вопросе. Это не то, чего я хочу, потому что я не просто пытаюсь поменять местами панели. Они должны исчезнуть, когда программа скажет им об этом. Как мне это сделать, скажем, привязав его к действию JButton?
Как показать/скрыть JPanels в JFrame?
comment
+1 к вашему вопросу... Игры очень часто имеют свой собственный пользовательский интерфейс. Существует не так много игр, которые используют какой-либо внешний вид Java, по крайней мере, не очень хорошо выглядящие. Какую игру вы делаете? на какие платформы вы ориентируетесь? (очевидно, не iPhone/iPad) [Отказ от ответственности: раньше я профессионально работал в индустрии видеоигр].
- person SyntaxT3rr0r   schedule 26.11.2010
comment
Спасибо! Это очень простая игра, это ролевая игра от первого лица, в которой в качестве сцен используются статические изображения. Я также надеюсь выяснить, как загружать несколько изображений на экран. Может быть, этот вопрос ответит и на это.
- person aharlow   schedule 26.11.2010
Ответы (3)
Вы можете скрыть JPanel, вызвав setVisible(false)
. Например:
public static void main(String args[]){
JFrame f = new JFrame();
f.setLayout(new BorderLayout());
final JPanel p = new JPanel();
p.add(new JLabel("A Panel"));
f.add(p, BorderLayout.CENTER);
//create a button which will hide the panel when clicked.
JButton b = new JButton("HIDE");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
p.setVisible(false);
}
});
f.add(b,BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}
person
dogbane
schedule
26.11.2010
Есть только одна проблема: измените p.setVisible(false); по f.setVisible (ложь); чтобы скрыть панель.
- person bestyasser; 04.04.2017
Вызовите parent.remove(panel)
, где parent
— это контейнер, в который вы хотите добавить рамку, а panel
— это панель, которую вы хотите добавить.
person
Mad Physicist
schedule
21.11.2013
Если вы хотите скрыть панель при нажатии кнопки, напишите ниже код в JButton Action. Я предполагаю, что вы хотите скрыть jpanel1.
jpanel1.setVisible(false);
person
Shiv Buyya
schedule
16.11.2018