Я пытаюсь открыть DebtForm.java
, когда нажата кнопка btnAddNewDebt
от IOUApplication.java
. После нажатия кнопки окно должно быть закрыто и должно открыться окно DebtForm.java
.Открытие JFrame при нажатии JButton
Мне удалось открыть DebtForm.java
, когда нажата кнопка btnAddNewDebt
, но я не могу закрыть окно IOUApplication.java
.
Я попытался с помощью следующих действий:
public void close(){
WindowEvent winClosingEvent = new WindowEvent(this,WindowEvent.WINDOW_CLOSING);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(winClosingEvent);
}
Но я не уверен, куда поместить код, или если есть какие-либо другие альтернативные методы, чтобы закрыть окно.
Вот отрывок из IOUApplication.java
для контекста:
public void initialize() {
frame = new JFrame();
frame.getContentPane().setBackground(Color.DARK_GRAY);
frame.setBounds(100, 100, 450, 132);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JButton btnAddNewDebt = new JButton("Add new debt");
btnAddNewDebt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DebtForm frame = new DebtForm();
frame.setVisible(true);
}
});
btnAddNewDebt.setBounds(81, 18, 117, 29);
frame.getContentPane().add(btnAddNewDebt);
JButton btnPersonalDebt = new JButton("Personal Debt");
btnPersonalDebt.setBounds(266, 18, 117, 29);
frame.getContentPane().add(btnPersonalDebt);
JLabel lblWrittenAndCoded = new JLabel("Written and coded by Samuel Kahessay");
lblWrittenAndCoded.setForeground(Color.WHITE);
lblWrittenAndCoded.setBounds(108, 88, 252, 16);
frame.getContentPane().add(lblWrittenAndCoded);
}
1) См. [Использование нескольких JFrames, Good/Bad Practice?] (Http://stackoverflow.com/q/9554636/418556) 2) Java GUI должны работать с различными ОС, размером экрана, экраном разрешение и т. д., используя разные PLAF в разных локалях. Таким образом, они не способствуют идеальной компоновке пикселей. Вместо этого используйте диспетчеры макетов или [их комбинации] (http://stackoverflow.com/a/5630271/418556), а также макет и границы для [пробела] (http://stackoverflow.com/a/17874718/ 418556). 3) Чтобы получить более эффективную помощь, отправьте сообщение [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –
Что случилось с ['Window # dispose'] (https://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#dispose()) или [' Window # setVisible'] (https://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#setVisible(boolean))? Возможно, взгляните на [Использование нескольких JFrames, Good/Bad Practice?] (Http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-practice) и для альтернатива взгляните на [Как использовать CardLayout] (http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html) – MadProgrammer
Избегайте использования макетов «null», идеальные макеты пикселей - это иллюзия в современных ui дизайн. Слишком много факторов, которые влияют на индивидуальный размер компонентов, ни один из которых вы не можете контролировать. Swing был разработан для работы с менеджерами компоновки в ядре, отбрасывая их, что не приведет к проблемам и проблемам, которые вы потратите все больше времени на исправление. – MadProgrammer