public void paintComponent(Graphics g) {
		super.paintComponent(g);
		
		if(zoom != 100) {
			Graphics2D g2 = (Graphics2D) g;
			g2.scale(zoom / 100, zoom / 100);
		}
		
		g.setColor(PROJ_VIEW_BACK_COLOR);
		g.fillRect(0, 0, width, height);
		
		for(int i = 0; i < tables.size(); i++) {
			Table t = tables.get(i);
			
			t.render(g);
			if(selected.contains(t)) {
				g.setColor(Color.WHITE);
				g.drawRect(t.getX() - 2, t.getY() - 2, t.getWidth() + 4, t.getHeight() + 4);
			}
		}
		
		if(act == Action.PARTNER) {
			if(blinkFrame < blinkRestart) {
				blinkFrame++;
			} else {
				blinkSize++;
				blinkFrame = blinkFrameStart;
				if(blinkSize > blinkMax) {
					blinkSize = 0;
				}
			}
			
			if(selected.get(0).getPartner() != null) {
				Table t = selected.get(0).getPartner();
				
				g.setColor(new Color(0, 255, 0));
				g.drawRect(t.getX() - blinkSize, t.getY() - blinkSize, t.getWidth() + blinkSize * 2, t.getHeight() + blinkSize * 2);
			}
			
			for(int i = 0; i < tables.size(); i++) {
				Table t = tables.get(i);
				
				if(t.contains(l.getMouse())) {					
					g.setColor(new Color(50, 50, 50));
					
					g.drawRect(t.getX() - blinkSize, t.getY() - blinkSize, t.getWidth() + blinkSize * 2, t.getHeight() + blinkSize * 2);
					break;
				}
			}
		}
		
		if(dragRect.isDragging()) {
			g.setColor(Color.BLACK);
			g.drawRect(dragRect.x, dragRect.y, dragRect.width, dragRect.height);
		}
		
		if(Constants.SHOW_ADDITIONAL_INFO) {
			int x = ((JViewport) getParent()).getViewRect().x + 10;
			int y = ((JViewport) getParent()).getViewRect().y + 20;
			
			g.setColor(Color.BLACK);
			g.drawString("FPS: " + fps, x, y);
		}
		
		g.dispose();
	}