繁体   English   中英

使用图形时如何工作私有无效?

How to work private void when using graphics?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

所以我一直在试图解决这个问题,但我不确定如何......我一直在这里处理这段代码:

public class Main extends JPanel {


public void paintComponent(Graphics g) {
    super.paintComponent(g);
    drawGrass(g);
    drawFlowers(g);
    
}

private void drawGrass(Graphics g) {
    super.paintComponent(g);

    Color brightGreen= new Color(60,176,31);
    g.setColor(brightGreen);
  
    g.setColor(brightGreen);
    g.fillRect(0,300,500,500); 
}

 private void drawFlowers(Graphics g) {
    super.paintComponent(g);
    Color pinkFlower = new Color(225,153,153);
    g.setColor(pinkFlower);
    g.fillRect(25,320,8,8);
    g.fillRect(320,380,8,8);
    g.fillRect(110,355,8,8);

}

我发现它只会绘制花朵,因为它覆盖了 drawGrass。 我将如何使它不会覆盖我的其他代码?

2 个回复

开始更简单。 如果您只使用一种方法,它应该可以正常工作。

public class Main extends JPanel {

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        // draw grass
        Color brightGreen= new Color(60,176,31);
        ...
        // draw flower
        Color pinkFlower = new Color(225,153,153);
        ...
    }

}

所以如果你想把两种颜色和绘图提取到方法中,你只需要在注释之间复制那些确切的行(你甚至可以使用你的IDE功能来“提取方法”),而不是添加另一个super.paintComponent(g) (这就是清除面板的内容)

关于问题标题,实际上, private void不是问题或与解决方案相关。

问题出在 drawFlowers 方法(并在 drawGrass 方法上重复)的第一行上的 super.paintComponent(g) 上。 你不能那样做。 删除它,再试一次,它会起作用。 请记住,当你在另一个方法中调用一个方法时,你的所有代码就像“在第一个方法中”......所以,你现在的代码就像

public void paintComponent(Graphics g) {
    super.paintComponent(g);//fist call.
    super.paintComponent(g);//duplicated, delete it on drawGrass method.
    Color brightGreen= new Color(60,176,31);
    g.setColor(brightGreen);
    g.setColor(brightGreen);
    g.fillRect(0,300,500,500); 
    super.paintComponent(g);//this is biggest problem, this overrides all work, remove it.
    Color pinkFlower = new Color(225,153,153);
    g.setColor(pinkFlower);
    g.fillRect(25,320,8,8);
    g.fillRect(320,380,8,8);
    g.fillRect(110,355,8,8);    
}
2 Java 不能在自己创建的私有无效中工作,但在执行按钮操作时确实如此

我对java很陌生,在制作我的第一个GUI界面时遇到了一些困难,不知道如何寻找解决方案。 所以在 netbeans 中,我创建了一个带有一些按钮和文本字段的界面。 当我单击其中一个按钮代码并调用一个方法时,在这个被调用的方法中,我尝试更改文本字段的文本但它不起作用,当我尝试在一个方法中更改文本字段 ...

5 PowerMockito 私有无效方法问题

我有以下课程 我已经创建了如下的测试类 } 我没有将 OP 称为“内部公共方法”,而是将非常奇怪的 OP 称为“内部私有方法”。 尽管我已将私有方法存根以不执行任何操作,但它的调用以及公共方法的 sysout 都没有打印出来。 当我使用PowerMockito.doAnswer()时它 ...

7 私有无效方法帮助C#

目前在我的计算器程序中使用一种方法来计算结果(税)时遇到了麻烦。 我查看了Murach的C#2012,但似乎无法找到解决此错误的方法。 错误: CS7036“没有给出与所需形式参数相对应的参数” 这是我的私人空白 我试图获取税率的值并将其插入我的代码中。 ...

2015-10-01 02:05:39 3 465   c#
10 Graphhopper:当图形具有无效边界时,无法创建位置索引

我在我的java项目中通过maven使用graphhopper 0.8。 我使用下拉代码创建一个网络 此时,图表中保存的边界框显示正确的数字。 文件被写入磁盘,包括“location_index”。 但是,重新加载数据会出现以下错误 使用以下代码完成读取 所以Loc ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM