The Jlabel is not showing up when I put it in the paint(Graphics2d g) method and I can’t figure out why.
My text class:
import java.awt.Color;
import java.awt.Graphics2D;
import javax.swing.JLabel;
public class Text {
int ballX,ballY,squareX,squareY;
Text text;
private Game game;
private Ball ball;
private Racquet racquet;
public void main(){
ballX = ball.getBallX();
ballY = ball.getBallY();
squareX = racquet.getSquareX();
squareY = racquet.getSquareY();
}
public void paint(Graphics2D g) {
g.setColor(Color.red);
JLabel balltext = new JLabel("the ball is at " + ballX + ballY);
balltext.setVisible(true);
g.setColor(Color.green);
JLabel squaretext = new JLabel("the ball is at " + squareX + squareY);
squaretext.setVisible(true);
}
}
There are a few things not quite right with your code.
Firstly,
Textdoes not extend from anything that is paintable, sopaintwill never be called. Convention tends to favor overridingpaintComponentof Swing components anyway.Also, you should always call
super.paintXxx, this would have highlighted the problem in the first place.Secondly, components are normally added to some kind container which takes care of painting them for you.
If you want to use Swing components in your program, I’d suggest taking a look at Creating a GUI With JFC/Swing.
If you want to paint text, I’d suggest you take a look at 2D Graphics, in particular Working with Text APIs
An bit more information about what it is you’re trying to achieve might also help
Also, I’m not sure if this deliberate or not, but
public void main(){ins’t going to act as the main entry point of the program, it should bepublic static void main(String args[]), but you might just be usingmainas means to call into the class from else where 😉