java - 重绘方法不起作用?

标签 java button colors actionlistener

按下按钮后,我在面板中重新绘制矩形时遇到问题。我更改颜色并调用重绘方法,所以我不确定为什么按下按钮后它不重绘。 “ Canvas 面板”是带有我尝试重绘的矩形的面板。“整个面板”是带有应该响应的按钮的面板。

我的代码:

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

最佳答案

我认为该缺陷存在于您编写的 itemStateChanged 方法中:

if (source==red) { 
    currentColor=Color.white; 
    ... 
}

红色单选和白色单选的情况下,您都将颜色设置为白色,这就是为什么矩形的颜色不是改变。

关于java - 重绘方法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48970429/

相关文章:

android - 在某个时候声音停止工作

Java swing 页眉和页脚背景颜色

php - 如何将 HTML 颜色代码存储在 MySQL 数据库中,然后搜索范围或颜色?

java - PrimeFaces OneRadio + "spacebar" key

java - 在 JAVA 中将非静态变量转换为静态变量?

java - 需要修复此: java. io.IOException:过早的EOF

java - Android - 检查用户输入前后 editText 是否>3

java - 将数据从 jsf 页面传输到 servlet

css - 输入提交想要在悬停时使用 css 进行更改

c# - 如何在 C# 中检测显示器上像素的颜色?