I'm new at working with JFrames. So I dont really know how to draw/paint/display everything in a JFrame. Im working on a memory game. Currently im working at the first form, this form must display a background image, a welcome text, a dropdown list with the amount of cards for the memory game and a button which should start the game. I succesfully displayed the background image and the welcome text. After adding the JButton and combobox my form got messed up (I only see a blue background). I have no idea what im doing wrong, also I dont know how I can place the button and dropdown on the right x and y position. I want to place the dropdown box under the welcome text and the button to the right of the dropdownbox.
This is my code:
Main:
package Memory;
public class Main {
    public static Memory memory;
    public static void main(String[] args) {
    memory = new Memory();
    }
}
Renderer:
package Memory;
import javax.swing.*;
import java.awt.*;
public class Renderer extends JPanel {
    private static final long serialVersionUID = 1L;
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Memory.backImage = new ImageIcon("Memory/memoryGame.jpg");
        Main.memory.repaint(g);
    }
}
Memory:
package Memory;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.*;
import javax.imageio.*;
import java.awt.FlowLayout;
public class Memory implements ActionListener {
    public String[] amountOfCards = {"8","16","32"};
    private JButton startButton;
    public Renderer renderer;
    public static ImageIcon backImage;
    public boolean screen1;
    public static final int WORLD_WIDTH=1250, WORLD_HEIGHT=800;
    public Memory() { 
    JComboBox comboBox = new JComboBox(amountOfCards);
    comboBox.setSelectedIndex(1);
    startButton = new JButton("Start game");
    JFrame jframe = new JFrame();
    Timer timer = new Timer(20,this);
    renderer = new Renderer();
    jframe.add(renderer);
    jframe.setTitle("Memory game");
    jframe.setSize(WORLD_WIDTH,WORLD_HEIGHT);
    jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jframe.setResizable(false);jframe.add(startButton);
    jframe.add(comboBox);
    jframe.setVisible(true);
    screen1=true;
    timer.start();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
    renderer.repaint();
    }
    public void repaint(Graphics g) {
        //welcome screen
        if(screen1) {
            BufferedImage scaledImage = getScaledImage();
            g.drawImage(scaledImage, 0, 0, null);
            g.setColor(new Color(150, 196, 100));
            g.setFont(new Font("TimesRoman", Font.PLAIN, 75));
            g.drawString("MEMORY GAME", WORLD_WIDTH / 2 - 275, 100);
            g.setFont(new Font("TimesRoman", Font.PLAIN, 25));
            g.drawString("Please select the amount of cards u want to play with and start the game!", WORLD_WIDTH / 2 -400, 200);
        }
    }
    public BufferedImage getScaledImage() {
        BufferedImage image = new BufferedImage(WORLD_WIDTH,WORLD_HEIGHT, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = (Graphics2D) image.createGraphics();
        g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY));
        g2d.drawImage(backImage.getImage(), 0, 0,WORLD_WIDTH,WORLD_HEIGHT, null);
        return image;
    }
}
 
     
     
    