Ich habe mit dem Window-Builder von Eclipse ein JFrame mit einem JScrollPane erstellt (Klasse Oberflaeche) und anschließend die Klasse Eintrag, die ein JPanel sein soll. Mein Ziel ist es, dass wenn ich auf den JButton bHinzufügen klicke, ein neues Objekt der Klasse Eintrag als JPanel in dem JScrollPane angezeigt wird. Jedoch wird dieses Panel nicht angezeigt. Auch nachdem ich für das JScrollPane ein eigenes Panel mit BoxLayout angelegt habe, wird kein Objekt der Klasse Eintrag angezeigt. Die Konsole spuckt leider auch keine Fehlermeldung aus, also auch nix aus dem ich schlau werde.
Mein Code:
Mein Code:
Java:
package warteliste;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.Toolkit;
import java.awt.Font;
public class Oberflaeche extends JFrame implements ActionListener {
private JPanel contentPane;
private JPanel panel;
private JTextField tf1;
private JButton bHinzufuegen;
private JScrollPane warteschlange;
private static String text;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Oberflaeche frame = new Oberflaeche();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Oberflaeche() {
setIconImage(Toolkit.getDefaultToolkit().getImage(Oberflaeche.class.getResource("/img/icon1.png")));
setTitle("Warteliste");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(200, 150, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
warteschlange = new JScrollPane();
warteschlange.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
warteschlange.setBounds(10, 11, 414, 195);
contentPane.add(warteschlange);
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
warteschlange.add(panel);
tf1 = new JTextField();
tf1.setFont(new Font("Tahoma", Font.PLAIN, 14));
tf1.setBounds(10, 217, 299, 33);
contentPane.add(tf1);
tf1.setColumns(10);
bHinzufuegen = new JButton("Hinzuf\u00FCgen");
bHinzufuegen.setBounds(319, 217, 105, 33);
bHinzufuegen.addActionListener(this);
contentPane.add(bHinzufuegen);
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource() == this.bHinzufuegen) {
text = tf1.getText();
try {
panel.add(new Eintrag());
System.out.println("Eintrag wurde hinzugefügt");
} catch(Exception e1) {
e1.printStackTrace();
}
panel.validate();
contentPane.validate();
warteschlange.validate();
this.validate();
}
}
public static String getText() {
return text;
}
}
Java:
package warteliste;
import javax.swing.*;
public class Eintrag extends JPanel {
/**
* Create the panel.
*/
public Eintrag() {
setLayout(null);
JLabel name = new JLabel();
System.out.println(Oberflaeche.getText());
name.setText(Oberflaeche.getText());
name.setBounds(10, 11, 248, 19);
add(name);
JCheckBox chckbxNewCheckBox = new JCheckBox("");
chckbxNewCheckBox.setBounds(318, 7, 28, 23);
add(chckbxNewCheckBox);
}
}