954,518 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

JLabel in JPanel

I am having trouble printing onto a JPanel. I am able to print any string that i want to. here my code:

import javax.swing.JFrame;
import java.awt.BorderLayout;


import javax.swing.JLabel;

public class TestDraw 
{

	public static void main(String[] args) 
	{
		final int WINDOW_WIDTH = 300, WINDOW_HEIGHT = 300;
		DrawPanel panel = new DrawPanel (WINDOW_WIDTH, WINDOW_HEIGHT);
		JFrame application = new JFrame();
		JLabel label = new JLabel();
		
		label.setText("test");
		
		application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		application.add(panel);
		application.setSize( 300, 300);
		application.setVisible( true);
		application.add(label, BorderLayout.SOUTH);
	}
}


Note "Test", what i really want to print is a random number generated from a class. Those numbers are generated here:

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JPanel;

public class DrawPanel extends JPanel 
{
	private Random randomNumbers = new Random();
	private MyLine lines [];
	private MyRectangle rectangles[];
	private MyOval ovals[];
	static final long serialVersionUID = 0;
	

	public String toString()
	{
		return String.format("Lines: %f, Ovals: %f, Rectangles: %f",lines,rectangles,ovals);
	}	
	//constructor, creates a panel with random shapes
	public DrawPanel(int windowWidth, int windowHeight)
	{
		// declare local variables
		int x1, y1, x2, y2;
		Color color;
		boolean fill;
		
		setBackground( Color.WHITE);
		
		lines = new MyLine[1+ randomNumbers.nextInt(5)];
		rectangles = new MyRectangle[1 + randomNumbers.nextInt(5)];
		ovals = new MyOval[1 + randomNumbers.nextInt(5)];		
		
		//create lines
		for (int count = 0; count < lines.length; count++)
		{
			//generate random coordinates
			x1 = randomNumbers.nextInt (windowWidth);
			y1 = randomNumbers.nextInt (windowHeight);
			x2 = randomNumbers.nextInt (windowWidth);
			y2 = randomNumbers.nextInt (windowHeight);
			
			//generate a random color
			color = new Color( randomNumbers.nextInt (256),
					randomNumbers.nextInt(256), randomNumbers.nextInt(256));
			
			fill = randomNumbers.nextBoolean ();
			
			//add to the list to be displayed
			lines[count] = new MyLine( x1, y1, x2, y2, color, fill);
		}
		
		//create rectangles
		for (int count = 0; count < rectangles.length; count++)
		{
			//generate random coordinates
			x1 = randomNumbers.nextInt (windowWidth);
			y1 = randomNumbers.nextInt (windowHeight);
			x2 = randomNumbers.nextInt (windowWidth);
			y2 = randomNumbers.nextInt (windowHeight);
			
			//generate a random color
			color = new Color( randomNumbers.nextInt (256),
					randomNumbers.nextInt(256), randomNumbers.nextInt(256));
			
			// generate a random fill
			fill = randomNumbers.nextBoolean ();
			
			//add to the list to be displayed
			rectangles[count] = new MyRectangle( x1, y1, x2, y2, color, fill);
		}
		
		//create ovals
		for (int count = 0; count < ovals.length; count++)
		{
			//generate random coordinates
			x1 = randomNumbers.nextInt (windowWidth);
			y1 = randomNumbers.nextInt (windowHeight);
			x2 = randomNumbers.nextInt (windowWidth);
			y2 = randomNumbers.nextInt (windowHeight);
			
			//generate a random color
			color = new Color( randomNumbers.nextInt (256),
					randomNumbers.nextInt(256), randomNumbers.nextInt(256));
			
			// generate a random fill
			fill = randomNumbers.nextBoolean ();
			
			//add to the list to be displayed
			ovals[count] = new MyOval( x1, y1, x2, y2, color, fill);
		}
	}
	
	public void paintComponent( Graphics g)
	{
		super.paintComponent (g);
		
		for (MyLine line : lines) 
			line.draw (g);
		for (MyRectangle rect : rectangles)
			rect.draw (g);
		for (MyOval oval : ovals)
			oval.draw (g);  
	}
}


Im trying to do is get the actually number of randomly generated numbers, the red, and be able to print those numbers on the JPanel. Like i said, i am able to print a string, but i am uncertain on how to move those numbers from the DrawPanel class to the TestDraw class.

helixkod
Light Poster
49 posts since Oct 2007
Reputation Points: 21
Solved Threads: 1
 

why are you defining the label in TestDraw? if it is going onto the DrawPanel, why not add it to that instead?

sillyboy
Practically a Master Poster
686 posts since Mar 2007
Reputation Points: 85
Solved Threads: 64
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You