Manuel Jung
Grünschnabel
Hallo zusammen, ich habe ein Problem dass mich bereits seit Tagen beschäftigt. Ich habe ein JFrame, darunter liegt ein JPanel welches einen JButton beinhaltet. Wenn ich auf den button klicke soll dem JFrame ein weiteres JPanel hinugefügt werden. Allerdings weiß ich nicht wie ich genau auf diese eine Instanz von JFrame zugreifen soll. Hier mal ein Beispielcode:
##Main Klasse
##DP Klasse
##Menu Klasse
## Output Klasse (soll hinzugefügt werden über einen User Klick)
Mir würden 3 theoretische Möglichkeiten einfallen, wobei ich nicht weiß ob und wie sie realisierbar sind:
1: Referenzierung über eine ID
2: Instanz der Klasse über Konstruktor mitgeben
3: auf Main.dp referenzieren ( liefert allerdings NULL zurück)
Ich danke schon mal für das lösen meines Problems.
Beste Grüße,
Manu
##Main Klasse
Code:
import javax.swing.JFrame;
public class Main {
static JFrame frame;
static DP dp = new DP();
public static void main(String[] args)
{
frame = new JFrame();
frame.setSize(1000, 700);
frame.add(dp);
frame.setVisible(true);
}
}
##DP Klasse
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JDesktopPane;
public class DP extends JDesktopPane
{
Menu menu;
Output out;
DP()
{
setBackground(Color.WHITE);
setLayout(new BorderLayout());
menu = new Menu();
out = new Output();
add(menu, BorderLayout.NORTH);
}
}
##Menu Klasse
Code:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Menu extends JPanel implements ActionListener
{
JButton button;
Output out;
DP dp = new DP(); // <-- wie referenziert man auf eine bestimmte Klasse?
// ich will auf die in Main erstelle Instanz von DP verweisen,
// allerdings liefert DP dp = Main.dp null zurück.
Menu()
{
setPreferredSize(new Dimension(0,50));
button = new JButton("Button");
out = new Output();
setLayout(null);
add(button);
button.setBounds(0, 0, 100, 50);
button.addActionListener(this);
button.setActionCommand("button");
}
@Override
public void actionPerformed(ActionEvent e)
{
if("button".equals(e.getActionCommand()));
{
dp.add(out, BorderLayout.WEST); // Soll dp ein weiteres JPanel hinzufügen
}
}
}
## Output Klasse (soll hinzugefügt werden über einen User Klick)
Code:
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
public class Output extends JPanel
{
Output()
{
setPreferredSize(new Dimension(400,0));
setBackground(Color.BLUE);
}
}
Mir würden 3 theoretische Möglichkeiten einfallen, wobei ich nicht weiß ob und wie sie realisierbar sind:
1: Referenzierung über eine ID
2: Instanz der Klasse über Konstruktor mitgeben
3: auf Main.dp referenzieren ( liefert allerdings NULL zurück)
Ich danke schon mal für das lösen meines Problems.
Beste Grüße,
Manu