【问题标题】:How to use button to control Canvas in Java?Java中如何使用按钮控制Canvas?
【发布时间】:2021-07-16 19:41:28
【问题描述】:

我被要求使用课本中的代码进行作业。 如何将数据从 Frame 转换为 Canvas? 例如,

public class test extends Frame {
   public static void main(String[] args) {new DefPoly();}
   int position = -1;
   test() {
      xxxxx
      });

      setSize(500, 300);
      Button button1 = new Button("lower end points");
      Button button2 = new Button("upper end points");

      button1.setBounds(20, 30,100,20);
      button2.setBounds(20, 60,100,20);
      
      add(button1);
      add(button2);
   
      add("Center", new Cvtest());
      setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
      setVisible(true);
   }
}

class CvTest extends Canvas {
   CvTest(){
      xxxxxxx
   }
   int position=1;
   int x1, y1, x2, y2;
   public void paint(Graphics g) {
      g.drawLine(position*x1, y1, x2, y2);
   }
}

代码只是一个例子,我想通过position来控制线的方向。因此,我在 Frame 中添加了actionListener,但未能更改position 的值。我需要了解更多关于 MCV 的信息吗?

【问题讨论】:

    标签: java awt


    【解决方案1】:

    添加一个方法:类 CvTest 中的 public setPosition(int position) 然后在actionListener中调用这个方法来改变位置 所有代码都是这样的:

        import java.awt.*;
    import java.awt.Canvas;
    import java.awt.Cursor;
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class Test extends Frame {
        int position = -1;
        CvTest cvTest;
        
        public Test(){
            setSize(500, 300);
            cvTest = new CvTest();
            
            Button button1 = new Button("lower end points");
            Button button2 = new Button("upper end points");
    
            button1.setBounds(20, 30,100,20);
            button2.setBounds(20, 60,100,20);
            
            button1.addActionListener(new ActionListener(){
    
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    // here can change position
                    cvTest.setPosition(position);
                }
                
            });
            
            add(button1);
            add(button2);
         
            
            add("Center", cvTest);
            setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
            setVisible(true);
        }
        
       public static void main(String[] args) {
             new Test();
       }
    }
    
    class CvTest extends Canvas {
       int position=1;
       int x1, y1, x2, y2;
       
       CvTest(){
    
       }
       
       public void setPosition(int position){
           this.position = position;
       }
       
       public void paint(Graphics g) {
          g.drawLine(position*x1, y1, x2, y2);
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-10-22
      • 2017-06-11
      • 2015-08-07
      • 2013-12-17
      • 2021-11-18
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多