Identificar um codigo qr

Olá
Tenho uma aplicação feita para gerar código QR, está funcionado tudo ok porém eu gostaria que a imagem do código viesse com um texto embaixo por exemplo:

                                            rrrrrrrrrrrrrrrrrrrr
                                            rrrrrrrrrrrrrrrrrrrr
                                            rrrrrrrrrrrrrrrrrrrr         -> código QR
                                            rrrrrrrrrrrrrrrrrrrr

                                               texto aqui

segue oque já fiz:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int size = 512;
String nomearquivo = txtnome.getText()+".PNG";

    try (
        FileOutputStream f = new FileOutputStream(nomearquivo);
         
        ByteArrayOutputStream out = QRCode.from(txttexto.getText()).to(ImageType.PNG).withSize(size,size).stream();
                      
        ){ 
        
    f.write(out.toByteArray());               
    f.close();
        JOptionPane.showMessageDialog(null,"Código QR gerado");
        
        Runtime.getRuntime().exec("explorer C:\\dist");
       
    } catch ( IOException ex) {
        Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println(ex);
    }
    
    
}

Olá basicamente você irá trabalhar com as classes do pacote java.awt, Graphics2d, BufferredImage, segue um exemplo:

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class Testing {
public static void main(String arg[]) throws IOException {
    String key = "MEU TEXTO";
    BufferedImage bufferedImage = ImageIO.read(new File("./qrcode.png"));
    Graphics graphics = bufferedImage.getGraphics();
    graphics.setColor(Color.LIGHT_GRAY);
    graphics.fillRect(bufferedImage.getWidth()/2, bufferedImage.getHeight()-50, 200, 50);
    graphics.setColor(Color.BLACK);
    graphics.setFont(new Font("Arial Black", Font.BOLD, 20));
    graphics.drawString(key, (bufferedImage.getWidth()/2), bufferedImage.getHeight() - 10);
    ImageIO.write(bufferedImage, "png", new File("./image.png"));
    System.out.println("Imagem criada");
   }
}

Então para fazer exatamente oque quero vou ter que mudar o código para usar outra classe ou posso adicionar este no que já fiz arrumando eventuais erros?
tinha pensado em colocar dois jtextfield para fazer a esse texto embaixo, seria + ou - assim:

                                        T.I - 001
                                    cat.- computador

Na verdade o código inteiro pode ser reaproveitado, basta fazer ajustes conforme a necessidade, o texto está nessa variável acima, basta trocar ou pegar de outro lugar. Nesse caso pode criar um método que recebe um texto e o caminho do QR e pronto.

Obrigado pela ajuda mas testei esse código junto com oque já tinha feito e ele não funcionou, também não deu erro simplesmente não fez nada.
No meu código eu crio um objeto “out” para gravar o bytearray, o texto que quero colocar teria quer ser nesse objeto certo?

Olá, acho que não está entendendo bem o código, coloque o código depois de f.close();, depois substitua aqui:

BufferedImage bufferedImage = ImageIO.read(new File(COLOQUE_AQUI_O_CAMINHO_DO_QR_GERADO));

Na variável String key = “MEU TEXTO” coloque o texto desejado e pronto, vai funcionar (se fizer os imports certinho).

Nessa parte ImageIO.write(bufferedImage, “png”, new File("./image.png")); ele cria outra imagem com o texto inserido no local especificado.

Nessa parte graphics.drawString(key, EIXO_X, EIXO_Y); ele escreve o texto na imagem, use o EIXO_X e Y para posicionar o texto.

Cara funcionou certinho muito obrigado e desculpe por não ter entendido ainda estou começando no java.