I am trying to set my buttons to change the panel background color in which the buttons reside using a borderlayout manager. I have no problems when I use flowlayout but can't figure it out with the border layout. I feel like I am missing something fundamental. I have found similar threads with panels and color changing but none have been able to answer my question. Here's what I have so far:
import java.awt.*; // Needed for BorderLayout class
import javax.swing.*; // Needed for Swing classes
import java.awt.event.*;//Needed for Action Listener
public class BorderPanelWindow extends JFrame
{
public BorderPanelWindow()
{
// Set the title bar text.
setTitle("Border Layout");
// Specify an action for the close button.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Add a BorderLayout manager to the content pane.
setLayout(new BorderLayout());
// Create five panels.
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
// Create five buttons.
JButton rbutton = new JButton("Red");
JButton bbutton = new JButton("Blue");
JButton gbutton = new JButton("Green");
JButton ybutton = new JButton("Yellow");
JButton obutton = new JButton("Orange");
//create actions for the buttons
ColorChanger yellowAction = new ColorChanger(Color.YELLOW);
ColorChanger redAction = new ColorChanger(Color.RED);
ColorChanger blueAction = new ColorChanger(Color.BLUE);
ColorChanger greenAction = new ColorChanger(Color.GREEN);
ColorChanger orangeAction = new ColorChanger(Color.ORANGE);
//set actions for the buttons
rbutton.addActionListener(redAction);
bbutton.addActionListener(blueAction);
gbutton.addActionListener(greenAction);
ybutton.addActionListener(yellowAction);
obutton.addActionListener(orangeAction);
// Add the buttons to the panels.
panel1.add(rbutton);
panel2.add(bbutton);
panel3.add(gbutton);
panel4.add(ybutton);
panel5.add(obutton);
// Add the five panels to the content pane.
add(panel1, BorderLayout.NORTH);
add(panel2, BorderLayout.SOUTH);
add(panel3, BorderLayout.EAST);
add(panel4, BorderLayout.WEST);
add(panel5, BorderLayout.CENTER);
// Pack and display the window.
pack();
setVisible(true);
}
private class ColorChanger implements ActionListener
{
//fields
private Color backgroundColor;
//constructor
public ColorChanger(Color c)
{
backgroundColor = c;
}
public void actionPerformed(ActionEvent e)
{
setBackground(backgroundColor);
}
}
public static void main(String[] args)
{
new BorderPanelWindow();
}
}
I've managed to get the code to compile