Somar um valor guardado numa opção do combobox com um textfield

Opa pessoal, tudo bem? Sou meio leigo em programação atualmente mais to precisando de ajuda um pouco urgente

No exercício que me foi passado tenho que calcular o Salário Líquido de um usuário descontado de IR e Alíquota e INSS programando em um Frame. O trabalho exige que o frame tenha um combobox com 3 cargos: Gerente, Analista e Técnico como mostra o print. De acordo com o cargo selecionado terá de ser adicionado uma gratificação ao salario do usuário. Sendo que eu não consigo de jeito nenhum fazer a soma de alguma opção escolhida do combobox com o salario bruto digitado para sair no campo salario liquido.

Se alguém manja em Java e puder ajudar o amiguinho agradeço!print

private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:

        int adicional1 = 800;
        int adicional2 = 450;
        int adicional3 = 150;
        int total, result;
        
        
        String add1 = String.valueOf(adicional1);
        String add2 = String.valueOf(adicional2);
        String add3 = String.valueOf(adicional3);
        String valor = String.valueOf(txtSalBruto.getText());
        result = Integer.parseInt(txtSalBrutoTitulo.getText());
        
        //Condições para somar o valor digitado + a Gratificação
    if(cmbboxCargo.getSelectedItem().equals("Gerente")){
         txtCargo.setText(add1+valor);
        }
     if(cmbboxCargo.getSelectedItem().equals("Analista")){
         txtSalLiquido.setText(add2+valor);
        }
     if(cmbboxCargo.getSelectedItem().equals("Técnico")){
         txtCargo.setText(add3+valor);
        }
     
     valor+=result;
    //Setando o valor somando com o resultado  
    txtSalLiquido.setText(String.valueOf(valor));

Creio que é porque você está usando Strings. No caso, eu não faria isso:

Deixa em int daí ele irá somar os valores. Você passando em String seria mais ou menos assim que ele mostraria ao usuário:

[quote="Rodrigo_Rodrigues1, post:1, topic:386573"]
if(cmbboxCargo.getSelectedItem().equals("Gerente")){ txtCargo.setText(add1+valor); }
[/quote]

Isso aqui acima, supondo que valor recebe “300”, ele mostraria “800300” (que é a “soma” da String kk) 800 que é a String + 300 que é a variável “valor”.

É a mesma coisa que você querer somar A + 1 = A1, certo?
Mas se o A (String) fosse um numero (Int), ai a soma é executada. 1 + 1 = 2

Então se você deixar o add1, o add2 e o add3 como int você irá conseguir somar. Int com String não somará nunca. Apenas mostrará os dois juntos. Int com Int será somado de fato os valores. Tente fazer essas mudanças ai. :wink:

E seus campos provavelmente aceitam que o usuário digite letras. Daí quando você for receber por exemplo essa linha aqui:

result = Integer.parseInt(txtSalBrutoTitulo.getText());

Vai mostrar um erro, pois letra não é int. Acrescente esta classe logo após a declaração de variáveis da sua tela (DENTRO DA CLASSE PRINCIPAL AINDA):

   class Numeral extends PlainDocument {

        @Override
        public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
            int tamanho = (this.getLength() + str.length());

            if (tamanho <= 7) { // Aqui você define quantos numeros o usuario pode digitar, no caso aqui so pode até 7 caracteres. 

                super.insertString(offs, str.replaceAll("[aA-zZ]", ""), a);
            } else {
                super.insertString(offs, str.replaceAll("[aA0-zZ9]", ""), a);
            }
        }
    } 
} // Essa chave fecha o programa la de cima "public class SuaTela extends javax.swing.JFrame {"

Então essa classe é uma classe interna mesmo.

Daí você vai la em cima, logo após o initComponents(); e coloca as variáveis que so podem receber números. Exemplo (num programa meu aqui):

public class CadastroContaView extends javax.swing.JFrame {
    /**
     * Creates new form View
     */
    public CadastroContaView() {
        initComponents();
       
        txtSalBruto.setDocument(new Numeral()); // Com isso ele não aceitará letras. Ai você coloca aqui também as outras variáveis (dos campos de texto) que não podem aceitar letras.
        
        
    }

Dessa forma, não ocorrerá este erro de receber letras em variáveis int.