Hallo,
ich stehe gerade vor dem folgenden Problem.
Ich bin gerade dabei aus meiner Gui-Klasse einzelne Elemente in eigenen Klassen auszulagen.
Nun probiere ich dies zunächst mit Test-Klassen. Jetzt habe ich dabei das Problem, dass ich aus der einen Klasse zum Beispiel die Hintergrundfarbe eines anderen Panels, welches in einer anderen Klasse ist, verändern möchte.
1. Hauptklasse
2. Panelklasse
Indem ich das programPanel derzeit protected statt private setze umgehe ich sozusagen das Problem. Wie bekomme ich es zum laufen, dass die Variable weiterhin private bleiben kann und trotzdem alles funktioniert?
Mit getter/setter komme ich auch nicht weit.
Hoffe es kann mir jemand weiterhelfen. danke schonmal.
ich stehe gerade vor dem folgenden Problem.
Ich bin gerade dabei aus meiner Gui-Klasse einzelne Elemente in eigenen Klassen auszulagen.
Nun probiere ich dies zunächst mit Test-Klassen. Jetzt habe ich dabei das Problem, dass ich aus der einen Klasse zum Beispiel die Hintergrundfarbe eines anderen Panels, welches in einer anderen Klasse ist, verändern möchte.
1. Hauptklasse
Java:
public class MenuLayoutDemo extends JFrame {
protected final JPanel programPanel; // UM DIESES PANEL GEHT ES
public static void main(final String[] args) {
new MenuLayoutDemo();
}
MenuLayoutDemo() {
super("MusicBuddies v.1");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final GraphicsEnvironment env = GraphicsEnvironment
.getLocalGraphicsEnvironment();
final Rectangle maxBounds = env.getMaximumWindowBounds();
final Container content = getContentPane();
content.setPreferredSize(new Dimension(maxBounds.width,
maxBounds.height));
content.setBackground(new Color(34, 34, 34));
final GroupLayout guiLayout = new GroupLayout(content);
content.setLayout(guiLayout);
final MenuPanel menuPanel = new MenuPanel(this);
programPanel = new JPanel();
programPanel.setBackground(Color.red);
guiLayout.setHorizontalGroup(guiLayout.createSequentialGroup()
.addGroup(guiLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(guiLayout.createSequentialGroup()
.addComponent(menuPanel, GroupLayout.PREFERRED_SIZE,
GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(programPanel)))
);
guiLayout.setVerticalGroup(guiLayout.createSequentialGroup()
.addGroup(guiLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(menuPanel)
.addComponent(programPanel))
);
pack();
setVisible(true);
}
}
2. Panelklasse
Java:
public class MenuPanel extends JPanel {
private final MenuLayoutDemo ml;
private JButton sammlungButton;
public MenuPanel(final MenuLayoutDemo ml) {
super(new GridBagLayout());
this.ml = ml;
this.setBackground(new Color(34, 34, 34));
final GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
final Rectangle maxBounds = env.getMaximumWindowBounds();
final GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
sammlungButton = new JButton(new ImageIcon(getClass().getResource("images/mb_button_musiksammlung_active.jpg")));
sammlungButton.setFocusPainted(false);
sammlungButton.setPreferredSize(new Dimension(200, 30));
sammlungButton.setRolloverEnabled(false);
sammlungButton.setBorder(null);
sammlungButton.setContentAreaFilled(false);
c.gridx = 0;
c.gridy = 0;
c.insets = new Insets(0, 20, 0, -78);
sammlungButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.out.println("Sammlung");
ml.programPanel.setBackground(Color.black); // HIER BENÖTIGE ICH DAS PANEL
}
});
this.add(sammlungButton, c);
}
}
Indem ich das programPanel derzeit protected statt private setze umgehe ich sozusagen das Problem. Wie bekomme ich es zum laufen, dass die Variable weiterhin private bleiben kann und trotzdem alles funktioniert?
Mit getter/setter komme ich auch nicht weit.
Hoffe es kann mir jemand weiterhelfen. danke schonmal.