我正在设计一个带有三个标记为“红色”,“绿色”和“蓝色”的复选框的JPanel,它们在GUI中心的JPanel的背景色中添加了红色,绿色或蓝色成分。最初,JPanel的“蓝色” JCheckBox被打勾,因此,JPanel的颜色为蓝色。勾选了不同的复选框后,JPanel上将显示适当的颜色组合,该组合总共可以显示八种颜色组合。
它应该像下面的图片:
该程序的代码为:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ColorDemo extends JFrame implements ItemListener
{
int r=0,g=0,b=0;
JCheckBox red,green,blue;
JPanel P = new JPanel();
JPanel cpanel = new JPanel();
Container pane = getContentPane();
ColorDemo(String cd){
super(cd);
red = new JCheckBox("red");
red.addItemListener(this);
green = new JCheckBox("green");
green.addItemListener(this);
blue = new JCheckBox("blue");
blue.setSelected(true);
blue.addItemListener(this);
cpanel.add(red);
cpanel.add(green);
cpanel.add(blue);
getContentPane().add(cpanel,"North");
setSize(400,400);
setVisible(true);
getContentPane().add(P);
P.setAlignmentX(JComponent.CENTER_ALIGNMENT);
setVisible(true);
}
public static void main(String[] args)
{
ColorDemo cd = new ColorDemo("Color Check Box");
cd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void itemStateChanged(ItemEvent ie){
if(ie.getItem() == red)
if(red.isSelected()) r=255; else r=0;
if(ie.getItem() == green)
if(green.isSelected()) g=255; else g=0;
if(ie.getItem() == blue)
if(blue.isSelected()) b=255; else b=0;
P.setBackground(new Color(r,g,b));
}
}
现在我遇到的问题是:
***它将颜色显示为背景,而不是居中显示。看图片:
***同样根据要求,最初选中了蓝色复选框,但未在JFrame上显示颜色。
我有点困惑(因为我对编程非常陌生),任何建议将不胜感激。谢谢。
在setVisible(true)
将代码更改为以下代码之前:
panel = new JPanel();
getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(new CardLayout(100, 100));
panel.add(P, "name");
P.setAlignmentX(JComponent.CENTER_ALIGNMENT);
P.setBackground(new Color(0,0,255));
这样可以防止颜色出现在整个画面上。这也会使默认颜色为蓝色,而不是原始的灰色默认值。
我所做的就是创建一个JPanel,其中的面板内部有一个卡布局,水平和垂直间距为100。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句