[英]repaint method not working?
Im having trouble redrawing a rectangle in a panel after a button is pushed. 我在按下按钮后无法在面板上重新绘制矩形。 Im changing the color and calling the repaint method so im not sure why it isnt repainting after a button is pushed.
我更改颜色并调用repaint方法,所以我不确定为什么按下按钮后就不重绘。 The "Canvas Panel" is the panel with the rectangle that im trying to redraw is in. The "Whole Panel" is the panel with the buttons that should be responding.
“画布面板”是带有我要重绘的矩形的面板。“整个面板”是带有应该响应的按钮的面板。
My code: 我的代码:
public WholePanel()
{
//white is the default color
currentColor = Color.WHITE;
//default x-y cooridnate, width, and height of a rectangle
currentWidth = currentHeight = 100;
x1 = 100; y1 = 100;
//Creating buttons
fillCheck = new JCheckBox("Filled");
white=new JRadioButton("white");
red=new JRadioButton("red");
//Adds listeners to each button
white.addItemListener(new ColorListener());
red.addItemListener(new ColorListener());
//Adding buttons to buttonGroup so only one can be pressed at a time
group.add(white);
group.add(red);
menuPanel = new JPanel();
menuPanel.add(fillCheck);
menuPanel.add(white);
menuPanel.add(red);
canvas = new CanvasPanel();
JSplitPane sPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, menuPanel, canvas);
setLayout(new BorderLayout());
add(sPane, BorderLayout.CENTER);
}
//insert ColorListener and FillListener classes
public class ColorListener implements ItemListener {
@Override
public void itemStateChanged(ItemEvent e) {
Object source=e.getSource();
if(source==red) {
currentColor=Color.white;
repaint();
}
else if (source==white) {
currentColor=Color.white;
repaint();
}
}
}
//This method is in a seperate CanvasPanel class where pressed keys will be
drawn
//this method draws all characters pressed by a user so far
public void paintComponent(Graphics page)
{
super.paintComponent(page);
//set color, then draw a rectangle
page.setColor(currentColor);
page.drawRect(x1, y1, currentWidth, currentHeight);
}
} // end of Canvas Panel Class
} // end of Whole Pane
I think the flaw is within your itemStateChanged
method where you wrote: 我认为缺陷在于您编写的
itemStateChanged
方法内:
if (source==red) {
currentColor=Color.white;
...
}
In both cases of red
radio and white
radio you are setting the color to white
and that's why the color of the rectangle is not changing. 在
red
收音机和white
收音机中,您都将颜色设置为white
,这就是矩形颜色不变的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.