private void setRow(int row, Item i, int number, long worth)
	{
		Craftable placeHolder = null;
		if (i.getType() == ItemType.CRAFTABLE)
		{
			placeHolder = (Craftable) i;
			ingredientProfitRatio[row].setEnabled(true);
			ingredientProfitRatio[row].setText(numberFormatter.format(placeHolder.getProfitRatio()));
			if (placeHolder.getProfitRatio() < profitRatioLessBad)
			{
				ingredientProfitRatio[row].setForeground(colorBad);
			}
			else if (placeHolder.getProfitRatio() > profitRatioMoreGood)
			{
				ingredientProfitRatio[row].setForeground(colorGood);
			}
			else
			{
				ingredientProfitRatio[row].setForeground(colorNeutral);	
			}
		}
		else
		{
			ingredientProfitRatio[row].setEnabled(false);
			ingredientProfitRatio[row].setForeground(colorNeutral);
			ingredientProfitRatio[row].setText(GUIManagerCrafting.BLANKSTRING);
		}
		
		ingredientButton[row].setEnabled(true);
		ingredientButton[row].setText(i.getName());
		ingredientButton[row].setActionCommand(i.getName());
		ingredientNumber[row].setEnabled(true);
		ingredientNumber[row].setText(String.valueOf(number));

		/*
		 * The setName GUIManager.BLANKSTRING followed by i.getName() keeps
		 * the propertyChange from firing ItemChangeEvents when
		 * worth is set
		 */
		ingredientWorth[row].setEnabled(true);
		ingredientWorth[row].setName(GUIManagerCrafting.BLANKSTRING);
		ingredientWorth[row].setValue(worth);
		ingredientWorth[row].setName(i.getName());

		ingredientWorthTotal[row].setEnabled(true);
		ingredientWorthTotal[row].setText(numberFormatter.format(number*worth));
		
		ingredientLastUpdated[row].setEnabled(true);
		ingredientLastUpdated[row].setText(numberFormatter.format(i.getDaysSinceUpdate()));
		if (i.getDaysSinceUpdate() > lastUpdatedMoreBad)
		{
			ingredientLastUpdated[row].setForeground(colorBad);
		}
		else
		{
			ingredientLastUpdated[row].setForeground(colorNeutral);
		}
	}