Porque não está entrando no if

Boa noite
Gostaria de saber porque este comando não está funcionando sendo que a condição é vedadeira?
Codigo do botão:

[code]String foto, album, cdrow, dvd;
foto=album=cdrow=dvd="Não";
    //este if está funcionando corretamente, so os ultimos 4 ifs que não estão.
    if (jrbCodigoServicos.getSelectedObjects()!=null){
        int codigo = Integer.parseInt(jtBuscaServicos.getText());
        try{
            Connection conn = Conexao.conecta();
            Statement stmt = conn.createStatement();
            ResultSet rs= stmt.executeQuery("SELECT Cod_Cliente, Cod_Servico, Evento, "+
		"Rua, Bairro, Cidade, DataEvento, Qtd_Fotos, Prazo_Entrega, "+
		"Valor_Total, Fotos, Album, CD_ROW, DVD FROM TB_Evento, "+
		"TB_Servico WHERE TB_Evento.Cod_Evento=TB_Servico.Cod_Evento "+
		"AND Cod_Cliente = "+codigo);
	//este if tbm está funcionando corretamente
            if(rs.next()){
                jlCodigoClienteServico.setText(rs.getString("Cod_Cliente"));
                jtTipoEventoServicos.setText(rs.getString("Evento"));
                jtEnderecolServicos.setText(rs.getString("Rua"));
                jtBairroServicos.setText(rs.getString("Bairro"));
                jtCidadeServicos.setText(rs.getString("Cidade"));
                jtDataEventoServicos.setText(rs.getString("DataEvento"));
                jtQuantidadeServicos.setText(rs.getString("Qtd_Fotos"));
                jtPrazoEntregaServicos.setText(rs.getString("Prazo_Entrega"));
                jlValorCobrarServicos.setText(rs.getString("Valor_Total"));
                foto = rs.getString("Fotos");
                album = rs.getString("Album");
                cdrow = rs.getString("CD_ROW");
                dvd = rs.getString("DVD");
                jlServicos.setText(rs.getString("Cod_Servico"));

                //So para saber o que cada variavel esta recebendo.
                System.out.println("foto: "+foto);
                System.out.println("album: "+album);
                System.out.println("cdrow: "+cdrow);
                System.out.println("dvd: "+dvd);
            }
            stmt.close();
            conn.close();
        }catch(Exception e){
            System.out.println("Erro: " +e.getMessage());
        }
    }
//estes ifs não estão funcionando
if(foto=="Sim")
    jcbFotosServicos.setSelected(true);
if(album=="Sim")
    jcbAlbumServicos.setSelected(true);
if(cdrow=="Sim")
    jcbCdrowServicos.setSelected(true);
if(dvd=="Sim")
    jcbDvdServicos.setSelected(true);[/code]

Estou recebendo os valores das variaveis de um banco de dados feito no access. O tipo do
campo é Varchar(3), e estou recebendo como String, mas independete do valor que as variaveis
recebam, mesmo que sejam Sim elas não entram no if so entram se eu colocar != de Não, mas ai
entra ate mesmo se for Não. Porque o if está lendo a string Sim como se fosse diferente da
String Sim?
Eu quero que o programa veja se a variavel é sim ou não se for sim, é para marcar o checkbox
se for não é para deixa-lo desmarcado.

obs: Já tentei converter em string usando String.valueOf(variavel) e mesmo assim não deu.

Quero saber como fazer que as condições dos meus ifs funcionem.

Valew.

substitua:

if(foto==“Sim”)

por

if (foto.equals(“Sim”))

Em java String é uma classe. E o tipo nao é primitivo. De modo para comparar você tem q usar o metodo equals da classe String.
Tente ver o metodo equlas() e o equalsIgnoreCase();

Mas tem a historia do objeto guardado no pool, de forma q esse codigo simula o dele. E funciona pois na hora q se cria gg na condicao e vai apontar para objeto ja criado:

[code]public static void main(String arg[]){

	String g = t();
	if(g=="gg"){
		System.out.println("entra no if");
	}
}

public static String t(){
return “gg”;
}[/code]

Até o momento do if, nenhuma string “Sim” tinha sido criada, e por isso não poderia estar no pool, retornar mesmo FALSE no momento do if.

Acredito ser recomendável sempre comparar Strings com o método equals, para evitar esses pequenos transtornos.