我爲你做了一個示例程序,讓我知道,如果你想要的東西以外的東西。我已經完成了這兩種方式,你可以通過按下JButton在JPanel上設置一個沒有任何項目的新顏色,或者你可以先將Item添加到JPanel,然後更改背景顏色,這工作正常。似乎你的問題有點不清楚,究竟是什麼,以及實際發生了什麼。如果你想要別的東西,請告訴我,除此之外。
而且,你將項目添加到已顯示的JPanel,總是重新驗證()和後重繪()您的JPanel,更改生效。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AddItemOrColor extends JFrame
{
private JPanel contentPane;
private JButton modifyItemButton;
private JButton modifyColorButton;
private ActionListener action;
private int count = 0;
private Color[] color = {
Color.RED, Color.BLUE, Color.GRAY,
Color.WHITE, Color.CYAN, Color.PINK,
Color.DARK_GRAY, Color.ORANGE, Color.MAGENTA
};
public AddItemOrColor()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationByPlatform(true);
contentPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 3, 3));
//contentPane.setMargin(new Insets(10, 10, 10, 10));
contentPane.setBackground(Color.BLUE);
modifyItemButton = new JButton("MODIFY CONTENT");
modifyColorButton = new JButton("MODIFY COLOR");
action = new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
JButton button = (JButton) ae.getSource();
if (count == 9)
count = 0;
if (button == modifyItemButton)
{
contentPane.add(new JLabel("LABEL " + count));
}
else if (button == modifyColorButton)
{
contentPane.setBackground(color[count]);
}
contentPane.revalidate();
contentPane.repaint();
count++;
}
};
modifyItemButton.addActionListener(action);
modifyColorButton.addActionListener(action);
add(modifyColorButton, BorderLayout.PAGE_START);
add(contentPane, BorderLayout.CENTER);
add(modifyItemButton, BorderLayout.PAGE_END);
setSize(400, 400);
setVisible(true);
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new AddItemOrColor();
}
});
}
}
好的代碼爲OP + 1 – mKorbel 2012-03-06 08:56:40
@mKorbel:Thankyou :-) – 2012-03-06 08:58:00