简体   繁体   中英

how to use method of one class in another class

here is first class

     // extending class from JPanel
    public class MyPanel extends JPanel {
// variables used to draw oval at different locations
    int mX = 200;
    int mY = 0;

// overriding paintComponent method
    public void paintComponent(Graphics g) {
// erasing behaviour – this will clear all the
// previous painting
        super.paintComponent(g);
// Down casting Graphics object to Graphics2D
        Graphics2D g2 = (Graphics2D) g;
// changing the color to blue
        g2.setColor(Color.blue);

// drawing filled oval with blue color
// using instance variables
        g2.fillOval(mX, mY, 40, 40);

now i want to use the method g2.setColot(Colot.blue) in the following where the question marks are.

// event handler method

public void actionPerformed(ActionEvent ae) {

// if ball reached to maximum width of frame minus 40 since diameter of ball is 40 then change the X-direction of ball

    if (f.getWidth() - 40 == p.mX) {
        x = -5;
?????  set the color as red ????????

    }

Add a Color member to your class. When you want to change the color, change to value of the member and call repaint() :

    public class MyPanel extends JPanel {
        int mX = 200;
        int mY = 0;
        Color myColor = Color.blue; //Default color is blue,
                                    //but make it whatever you want

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(myColor);

        g2.fillOval(mX, mY, 40, 40);
    }


public void actionPerformed(ActionEvent ae) {

    if (f.getWidth() - 40 == p.mX) {
        x = -5;
        myColor = Color.red;
        repaint();    
    }
}

If I understand what you need is to make Graphics2D g2 a class attribute. This way all the methods in your class can access that "global" variable:

public class MyPanel extends JPanel {
    Graphics2D g2;

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g2 = (Graphics2D) g;
        ...
    }

    public void actionPerformed(ActionEvent ae) {
        g2.setColor(...);
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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