如何";禁用一种方法";在java中,并在actionPerformed方法中激活它(如果有意义的话)

如何";禁用一种方法";在java中,并在actionPerformed方法中激活它(如果有意义的话),java,applet,awt,paint,Java,Applet,Awt,Paint,情境:所以我调用了绘画方法中的draw方法。但是,我只希望它在单击convert按钮时绘制。如何告诉java不要绘制3DRectangle,除非(ae.getSource==convert)??我是GUI新手,你们可能会说,所以请简单回答。谢谢你的帮助 代码: 方法不能“禁用”,但可以使用布尔变量和if语句来实现相同的功能: boolean isClicked = false; public void paint(Graphics g) { super.paint();

情境:所以我调用了绘画方法中的draw方法。但是,我只希望它在单击convert按钮时绘制。如何告诉java不要绘制3DRectangle,除非(ae.getSource==convert)??我是GUI新手,你们可能会说,所以请简单回答。谢谢你的帮助

代码:

方法不能“禁用”,但可以使用布尔变量和if语句来实现相同的功能:

 boolean isClicked = false;

 public void paint(Graphics g)
 {
    super.paint();
    fare.setLocation(160,50);
    farenheit.setLocation(90,50);
    convert.setLocation(310,5);
    draw(g);
 }

 public void actionPerformed(ActionEvent ae)
 {
      if (ae.getSource() == convert)
      {
           isClicked = true;
      }
 }

 public void draw(Graphics g)
 {
     if (isClicked)
     {
        g.setColor(Color.BLUE);
        g.fill3DRect(0,0,400,100,true);
     }
 }

在进行任何实际的绘画之前,不要忘记调用super.paint,这很有趣。。super.paint的具体用途是什么?我应该把它放在哪里?多谢各位@MadProgrammerPaint负责为绘制准备图形状态,绘制组件的边框、背景、子组件,在进行任何自定义绘制之前,您应该首先调用它1)为什么要编写小程序?如果是老师指定的,请参考。2) 为什么要使用AWT?有关放弃AWT使用组件而支持Swing的许多好理由,请参阅。@AndrewThompson谢谢Andrew。我考虑了你说的话。这确实是给我公司的。然而,Sci老师,我已经开始研究基本的Swing gui程序。似乎很简单。非静态变量drawswitch不能从静态上下文引用以更直观地使用,当方法被“禁用”时,抛出
IllegalStateException可能更有意义。当然,这取决于被禁用元素的行为。@olavimutanoja如果您想发出一个实现错误的信号,它会这样做,但OP希望该方法被“静默”禁用,或者在可接受的状态下被禁用。@imgolden62我更新了我的帖子。要么方法和变量都需要是静态的,要么两者都不应该是静态的,所以我从
draw()
方法中删除了静态的。我还根据@MadProgrammer的评论提供了一个
super.paint()
的示例。@mdnghtblue这是非常正确的。有了按钮,如果它被禁用,简单地“什么都不做”可能也是标准的。但是,当按下禁用的按钮时,抛出异常提供了一种方便的方法来执行其他操作
 boolean isClicked = false;

 public void paint(Graphics g)
 {
    super.paint();
    fare.setLocation(160,50);
    farenheit.setLocation(90,50);
    convert.setLocation(310,5);
    draw(g);
 }

 public void actionPerformed(ActionEvent ae)
 {
      if (ae.getSource() == convert)
      {
           isClicked = true;
      }
 }

 public void draw(Graphics g)
 {
     if (isClicked)
     {
        g.setColor(Color.BLUE);
        g.fill3DRect(0,0,400,100,true);
     }
 }