Ich versuche, DebtForm.java
zu öffnen, wenn die btnAddNewDebt
Schaltfläche von IOUApplication.java
gedrückt wird. Sobald die Schaltfläche gedrückt wird, sollte das Fenster IOUApplication.java
geschlossen werden und das Fenster DebtForm.java
sollte geöffnet werden.Öffnen eines neuen JFrames, wenn JButton geklickt wird
Ich habe es geschafft, die DebtForm.java
zu öffnen, wenn die btnAddNewDebt
Taste gedrückt wird, aber ich bin nicht in der Lage, das IOUApplication.java
Fenster zu schließen.
Ich habe versucht, die Verwendung von folgenden:
public void close(){
WindowEvent winClosingEvent = new WindowEvent(this,WindowEvent.WINDOW_CLOSING);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(winClosingEvent);
}
Aber ich bin nicht sicher, wo Sie den Code platzieren oder wenn es irgendwelche anderen alternativen Methoden sind das Fenster zu schließen.
Hier ist ein Ausschnitt aus IOUApplication.java
für Kontext:
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) Siehe [Die Verwendung mehrerer JFrames, gute/schlechte Praxis?] (Http://stackoverflow.com/q/9554636/418556) 2) Java GUIs müssen auf verschiedenen Betriebssystemen, Bildschirmgröße, Bildschirm arbeiten Auflösung usw. unter Verwendung verschiedener PLAFs in verschiedenen Lokalitäten. Als solche sind sie nicht für ein perfektes Pixel-Layout geeignet. Verwenden Sie stattdessen Layout-Manager oder [Kombinationen davon] (http://stackoverflow.com/a/5630271/418556) zusammen mit Layout-Auffüllung und Rahmen für [Leerraum] (http://stackoverflow.com/a/17874718/ 418556). 3) Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) veröffentlichen. –
Was ist falsch mit ['Window # dispose'] (https://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#dispose()) oder [' Window # setVisible'] (https://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#setVisible(boolean))? Vielleicht werfen Sie einen Blick auf [Die Verwendung mehrerer JFrames, gute/schlechte Praxis?] (Http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-practice) und für eine Alternativ werfen Sie einen Blick auf [How To Use CardLayout] (http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html) – MadProgrammer
Vermeiden Sie die Verwendung von 'null' Layouts, Pixel perfekte Layouts sind eine Illusion innerhalb der Moderne UI Design. Es gibt zu viele Faktoren, die die individuelle Größe von Komponenten beeinflussen, von denen Sie keine kontrollieren können. Swing wurde entwickelt, um mit Layout-Managern im Kern zu arbeiten. Wenn man diese wegwirft, führt das zu keinem Ende der Probleme und Probleme, die man immer mehr Zeit damit verbringen wird, zu korrigieren. – MadProgrammer