Ich versuche, einige Java-Fähigkeiten zurück zu bekommen, weil ich für eine lange Zeit in webdevelopment gearbeitet habe. Jetzt erstelle ich einfach einen Haupt-Jframe, wo ein kleines Menü ist und eine Klasse createSchueler erweitert JPanel.Ich habe versucht, ein JPanel zu meinem JFrame bei Klick hinzuzufügen, aber ich finde meinen Fehler nicht
Also, was ich tun möchte, wenn Sie das Menü klicken Neu gehen in> Schueler
Ein neues JPanel erstellt werden soll und zu dem Fenster
Hauptklasse
public class MainWindow {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainWindow window = new MainWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public MainWindow() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 807, 541);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel createSchueler = new createSchueler();
JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
JMenu mnNewMenu = new JMenu("Neu");
mnNewMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
createSchueler.setVisible(true);
frame.getContentPane().add(createSchueler);
}
});
menuBar.add(mnNewMenu);
JMenuItem mntmSchler = new JMenuItem("Sch\u00FCler");
mnNewMenu.add(mntmSchler);
JMenu mnBearbeiten = new JMenu("Bearbeiten");
menuBar.add(mnBearbeiten);
JMenuItem mntmSchler_1 = new JMenuItem("Sch\u00FCler");
mnBearbeiten.add(mntmSchler_1);
}
}
Die createSchueler Klasse erweitert JPanel, die ich dem Rahmen hinzufügen möchte
public class createSchueler extends JPanel {
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
/**
* Create the panel.
*/
public createSchueler() {
setLayout(null);
JLabel lblNeuenSchuelerErstellen = new JLabel("Neuen Schueler erstellen");
lblNeuenSchuelerErstellen.setFont(new Font("Tahoma", Font.PLAIN, 22));
lblNeuenSchuelerErstellen.setBounds(29, 27, 268, 27);
add(lblNeuenSchuelerErstellen);
JLabel lblVorname = new JLabel("Vorname");
lblVorname.setBounds(29, 102, 46, 14);
add(lblVorname);
textField = new JTextField();
textField.setBounds(97, 99, 172, 20);
add(textField);
textField.setColumns(10);
JLabel lblNachname = new JLabel("Nachname");
lblNachname.setBounds(29, 133, 69, 14);
add(lblNachname);
textField_1 = new JTextField();
textField_1.setBounds(97, 130, 172, 20);
add(textField_1);
textField_1.setColumns(10);
JLabel lblGeburtstag = new JLabel("Geburtstag");
lblGeburtstag.setBounds(29, 169, 69, 14);
add(lblGeburtstag);
textField_2 = new JTextField();
textField_2.setBounds(97, 166, 172, 20);
add(textField_2);
textField_2.setColumns(10);
ButtonGroup bg = new ButtonGroup();
JRadioButton rdbtnMnnlich = new JRadioButton("M\u00E4nnlich");
rdbtnMnnlich.setBounds(29, 206, 69, 23);
bg.add(rdbtnMnnlich);
JRadioButton rdbtnWeiblich = new JRadioButton("Weiblich");
rdbtnWeiblich.setBounds(97, 206, 109, 23);
bg.add(rdbtnWeiblich);
}
}
Everything g ist wichtig, hoffentlich: D
Ok ich über die Null-Layout heared auch einige schlechte Dinge. Aber ich habe es nur benutzt, weil es ein einfaches Beispiel ist, aber ich werde es in Zukunft erinnern. Aber ich weiß immer noch nicht, warum mein Frame das Jpanel nicht anzeigt, ich suche den Fehler in meinem Code, hast du eine Idee? Es funktioniert nicht mit Repaint oder Revalidate :( – KungFuKugelfisch
@KungFuKugelfisch: Ich habe Ihnen schon gesagt, warum - Sie verwenden Null-Layouts. Wenn Sie geeignete Layouts verwenden würde, wird das Problem weg. –
@KungFuKugelfisch: Ihre JPanel hat eine bevorzugte Größe von 0,0 wegen der Verwendung von Null-Layouts, und weil Sie Null-Layouts in der contentPane verwenden, wird es nicht einmal die bevorzugte Größe respektieren, sondern die tatsächliche Größe, von denen keine festgelegt wurden Manager Beiß die Kugel und lerne sie –