hallo,
habe ein panel das dynamisch mit labeln gefüllt wird,
nun soll der inhalt über eine funktion gesteuert werden,
die funktion generiert eine liste an labeln die dann auf das panel gelegt werden.
da ich in letzter zeit nicht viel mit swing gemacht habe (RPC mit SWT und jetzt eben ein applet mit swing)
in swt würde ich das mit dispose() & isdisposed machen...
in swing hab ichs so versucht (hier ein kleines beispielprogramm...)
im button click wird das gemacht, was später in meiner resizePanel() function drin ist.
also wird 'einfach' der alte panel entfernt und ein neuer auf die alte variable gelegt
habe ein panel das dynamisch mit labeln gefüllt wird,
nun soll der inhalt über eine funktion gesteuert werden,
die funktion generiert eine liste an labeln die dann auf das panel gelegt werden.
da ich in letzter zeit nicht viel mit swing gemacht habe (RPC mit SWT und jetzt eben ein applet mit swing)
in swt würde ich das mit dispose() & isdisposed machen...
in swing hab ichs so versucht (hier ein kleines beispielprogramm...)
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Frame {
private JFrame frame;
JLabel label1;
JLabel label2;
JLabel label3;
JPanel panel;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Frame window = new Frame();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Frame() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout(0, 0));
{
panel = new JPanel();
panel.setBackground(new Color(255, 0, 0));
panel.setLayout(new BorderLayout(0, 0));
frame.getContentPane().add(panel, BorderLayout.CENTER);
{
label1 = new JLabel("1");
panel.add(label1, BorderLayout.NORTH);
}
{
label2 = new JLabel("2");
panel.add(label2, BorderLayout.CENTER);
}
{
label3 = new JLabel("3");
panel.add(label3, BorderLayout.SOUTH);
}
}
{
JButton button = new JButton("New button");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
frame.getContentPane().remove(panel);
panel = new JPanel();
panel.setBackground(new Color(0, 255, 0));
frame.getContentPane().add(panel);
panel.setLayout(new BorderLayout(0, 0));
{
label1 = new JLabel("4");
panel.add(label1, BorderLayout.NORTH);
}
{
label2 = new JLabel("5");
panel.add(label2, BorderLayout.CENTER);
}
{
label3 = new JLabel("6");
panel.add(label3, BorderLayout.SOUTH);
}
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.repaint();
panel.repaint();
}
});
frame.getContentPane().add(button, BorderLayout.NORTH);
}
}
}
im button click wird das gemacht, was später in meiner resizePanel() function drin ist.
also wird 'einfach' der alte panel entfernt und ein neuer auf die alte variable gelegt