Я работаю над назначением для класса, где нам нужно создать JComboBox, и каждый параметр открывает новое окно, в котором вы можете делать все, что хотите, в этих новых окнах. Пожалуйста, имейте в виду, что я очень новичок в GUI и новичок в Java в целом, если мои вопросы глупы.Очистить JPanel от JFrame
У меня есть вопрос и вопрос ...
Мой вопрос:
Когда пользователь выбирает опцию «Матрица» новое окно всплывает с цитатой и две кнопки. Сейчас у меня две панели JPanels (панель и панель2) добавляет цитату в позицию NORTH, а затем панель2 добавляет две кнопки в позицию CENTER с использованием BorderLayout. Мой вопрос заключается в том, что я делаю это правильно ... Могу ли я использовать только панель для добавления цитаты и кнопок или необходимо создать отдельные панели для отдельных элементов, добавляемых в JFrame? Когда я включил их в одну панель, цитата не была в окне, когда я запускал программу.
panel.add(matrixQuote);
newFrame.add(panel, BorderLayout.NORTH);
Вот как у меня было, когда не отображались ^^^
Я ПОЛУЧИЛ ПРОБЛЕМУ С ОЧИСТКА JFrame FIXED
Я пытаюсь добавить ActionListener к BluePill и вместо того, чтобы открывать другое новое окно, мне показалось, что я могу очистить все из существующего окна, когда нажата кнопка, а затем отобразить что-то новое в указанном окне. Единственная информация, которую я мог найти на этом, - это то, как я ее использую в методе actionPerformed ниже. Я опубликую фрагмент того, о чем я говорю, ниже, а затем весь мой код ниже, на всякий случай.
Весь мой код ...
public class MultiForm extends JFrame{
private JComboBox menu;
private JButton bluePill;
private JButton redPill;
private JLabel matrixQuote;
private int matrixSelection;
private JFrame newFrame;
private JPanel panel;
private JPanel panel2;
private static String[] fileName = {"", "The Matrix", "Another Option"};
public MultiForm() {
super("Multi Form Program");
setLayout(new FlowLayout());
menu = new JComboBox(fileName);
add(menu);
TheHandler handler = new TheHandler();
menu.addItemListener(handler);
}
public void matrixPanel() {
TheHandler handler = new TheHandler();
//Create a new window when "The Matrix" is clicked in the JCB
newFrame = new JFrame();
panel = new JPanel();
panel2 = new JPanel();
newFrame.setLayout(new FlowLayout());
newFrame.setSize(500, 300);
newFrame.setDefaultCloseOperation(newFrame.EXIT_ON_CLOSE);
matrixQuote = new JLabel("<html>After this, there is no turning back. "
+ "<br>You take the blue pill—the story ends, you wake up "
+ "<br>in your bed and believe whatever you want to believe."
+ "<br>You take the red pill—you stay in Wonderland, and I show"
+ "<br>you how deep the rabbit hole goes. Remember: all I'm "
+ "<br>offering is the truth. Nothing more.</html>");
panel2.add(matrixQuote);
newFrame.add(panel2, BorderLayout.NORTH);
//Blue pill button and picture.
Icon bp = new ImageIcon(getClass().getResource("Blue Pill.png"));
bluePill = new JButton("Blue Pill", bp);
panel2.add(bluePill);
bluePill.addActionListener(handler);
//Red pill button and picture
Icon rp = new ImageIcon(getClass().getResource("Red Pill.png"));
redPill = new JButton("Red Pill", rp);
panel2.add(redPill);
newFrame.add(panel2, BorderLayout.CENTER);
newFrame.setVisible(true);
}
private class TheHandler implements ItemListener, ActionListener{
public void itemStateChanged(ItemEvent IE) {
//listen for an item to be selected.
if(IE.getStateChange() == ItemEvent.SELECTED) {
Object selection = menu.getSelectedItem();
if("The Matrix".equals(selection)) {
matrixPanel();
}
else if("Another Option".equals(selection)) {
}
}
}
public void actionPerformed(ActionEvent AE) {
if(AE.getSource() == bluePill) {
newFrame.remove(panel);
newFrame.remove(panel2);
newFrame.repaint();
}
}
}
//MAIN
public static void main(String[] args) {
MultiForm go = new MultiForm();
go.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
go.setSize(400, 200);
go.setVisible(true);
}
}
вы правы, я починю – roeygol
Ну я как бы был его противоположностью в моем коде, где я извлекая панель с newFrame ... newFrame.remove (панели); и он ничего не делал – NoobCoderChick
Вот как у меня это в моем коде, но при нажатии кнопки ничего не удаляется. Или проблема заключается в том, как я написал действие? – NoobCoderChick