【发布时间】:2014-04-29 12:34:10
【问题描述】:
我正在尝试设置我的按钮以使用边框布局管理器更改按钮所在的面板背景颜色。当我使用 flowlayout 时我没有问题,但无法通过边框布局来解决。我觉得我错过了一些基本的东西。我发现了类似的带有面板和颜色变化的线程,但没有一个能够回答我的问题。到目前为止,这是我所拥有的:
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();
}
}
我已经设法让代码编译
【问题讨论】:
-
你的问题是什么?
-
如何使用每个面板中的按钮更改面板背景颜色?
标签: java swing background-color panels border-layout