style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Problemas con una aplicacion swing en java

tengo un problema de poner el enfoque al componente JList lstArtis al iniciar la aplicacion

package soundrock;
import java.awt.*;
import java.awt.event.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
// esta clase crea una parte de mi aplicacion con un JPanel

public class ArribaControl extends JPanel{
private JLabel lblArtis;
  private JLabel lblMelodi;
  private Dimension lsize = new Dimension(180,17);
  private Dimension lcsize = new Dimension(250,17);
  private Dimension psize = new Dimension(550,230);
  private Dimension scpsize = new Dimension(200,180);
  private Font lfont = new Font("Tahoma", 0, 14);
  private Font lstfont = new Font("Tahoma", 0, 12);
        private String[] items = { "item 0", "item 1", "item 2", "item 3" };
  private JList lstArtis = new JList(items);
  private JList lstMelodi  = new JList(items);
  private String value;
  private SpringLayout slArea;
 
       
  public ArribaControl(){
    slArea = new SpringLayout();
    this.setLayout(slArea);
    this.setPreferredSize(psize);
    lblArtis = new JLabel("Artistas disponibles");
    lblArtis.setFont(lfont);
    lblArtis.setPreferredSize(lsize);
    lblMelodi = new JLabel("Canciones disponibles del artista");
    lblMelodi.setFont(lfont);
    lblMelodi.setPreferredSize(lcsize);
    value = "";

                //Necesito que este JList tenga el enfoque al iniciar la aplicacion
   
    lstArtis.setVisibleRowCount(10);
    lstArtis.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    lstArtis.setSelectedIndex(0);
    lstArtis.setFont(lstfont);

    JScrollPane spArtis = new JScrollPane(lstArtis);
    spArtis.setPreferredSize(scpsize);
   
       
    lstMelodi.setVisibleRowCount(10);
    lstMelodi.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    lstMelodi.setSelectedIndex(0);
    lstMelodi.setFont(lstfont);
    JScrollPane spMelodi = new JScrollPane(lstMelodi);
    spMelodi.setPreferredSize(scpsize);

    add(lblArtis);
    add(lblMelodi);
    add(spArtis);
    add(spMelodi);
   
    slArea.putConstraint(SpringLayout.WEST, lblArtis, 5, SpringLayout.WEST, this);
    slArea.putConstraint(SpringLayout.NORTH, lblArtis, 5, SpringLayout.NORTH, this);

    slArea.putConstraint(SpringLayout.WEST, lblMelodi, 5, SpringLayout.EAST, lblArtis);
    slArea.putConstraint(SpringLayout.NORTH, lblMelodi, 5, SpringLayout.NORTH, this);

    slArea.putConstraint(SpringLayout.WEST, spArtis, 5, SpringLayout.WEST, this);
    slArea.putConstraint(SpringLayout.NORTH, spArtis, 5, SpringLayout.SOUTH, lblArtis);

    slArea.putConstraint(SpringLayout.WEST, spMelodi, 5, SpringLayout.EAST, spArtis);
    slArea.putConstraint(SpringLayout.NORTH, spMelodi, 5, SpringLayout.SOUTH, lblArtis);

    ListEventHand handler = new ListEventHand();
    lstArtis.addKeyListener(handler);
    lstMelodi.addKeyListener(handler);

   }
   private class ListEventHand implements KeyListener{
     public void keyPressed( KeyEvent event ){
      if ((event.getKeyCode() == KeyEvent.VK_H) && (lstMelodi.isFocusOwner()) ){
       JOptionPane.showMessageDialog(null, "lo mande  a tocar", "tocando", 2);
      } else if(event.getKeyCode() == KeyEvent.VK_H){
        lstMelodi.requestFocusInWindow();
      }
      else if(event.getKeyCode() == KeyEvent.VK_G){
        lstArtis.requestFocusInWindow();
      }
    }

     public void keyReleased( KeyEvent event ){
      //nada
     }
     public void keyTyped( KeyEvent event ){
      //nada
    }
   }

         //intente poniendo este metodo pero no funciona
   public void putFocus(){
   lstArtis.requestFocusInWindow();
   }

}

y la uso en esta

package soundrock;
import soundrock.*;
import javax.swing.*;
import java.awt.*;

//esta clase une a Informacion, Arriba control, Tocando y shImage

public class Une extends JFrame {
  //private SpringLayout esquema;
  private Container cont;
  private Informacion infor;
  private ArribaControl arricon;
  private shImage shimag;
  private Tocando pontoca;

  public Une(){
    super("Apliacación");
    SpringLayout esqma = new SpringLayout();
    cont = this.getContentPane();
    cont.setLayout(esqma);

    infor = new Informacion();

//aqui creoa una isntancia de la clase que quiero tenga el enfoque por default

    arricon = new ArribaControl();
    //intente llamar a este metodo pero no funciona
    arricon.putFocus();

    shimag = new shImage();
    pontoca = new Tocando();
   
   cont.add(infor); cont.add(arricon);
   cont.add(shimag); cont.add(pontoca);
   
    esqma.putConstraint(SpringLayout.WEST, infor, 1, SpringLayout.WEST, cont);
    esqma.putConstraint(SpringLayout.NORTH, infor, 1, SpringLayout.NORTH, cont);
    esqma.putConstraint(SpringLayout.WEST, arricon, 1, SpringLayout.EAST, infor);
    esqma.putConstraint(SpringLayout.NORTH, arricon, 1, SpringLayout.NORTH, cont);
    esqma.putConstraint(SpringLayout.WEST, shimag, 1, SpringLayout.WEST, cont);
    esqma.putConstraint(SpringLayout.NORTH, shimag, 1, SpringLayout.SOUTH, infor);
    esqma.putConstraint(SpringLayout.WEST, pontoca, 1, SpringLayout.EAST, shimag);
    esqma.putConstraint(SpringLayout.NORTH, pontoca, 1, SpringLayout.SOUTH, arricon);

  }
 
}

y por ultimo la clase principal

mport soundrock.*;
import javax.swing.*;
import java.awt.event.*;

public class Main {

    public static void main(String[] args) {
      Une pp = new Une();
      pp.setVisible(true);
      pp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      pp.setSize(800, 600);
      pp.setExtendedState(JFrame.MAXIMIZED_BOTH);
    }

}

Alguien me puede ayudar gracias

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de charlymex

Revisa los focos

Seguramente cuando añades contenido nuevo te está cambiando los focos... usa el putFocus al final de tus constructores, una vez que tu interfaz ya está armada. incluyendo la generación de tu ventana principal.

Ayuda con Login en java a Base de datos Oarcle

Tengo un login con java a base de atos oracle y no sé que programar para cuando el usuario presione el boton exit del login, la aplicación no se termina.

Imagen de adrianaaae

Finalizar sistema

Puedes utilizar:

System.exit(estado);

Puedes obtener mas información Aqui

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">