Jpane-JScrollpane (visualisación)

madeline
14 de Noviembre del 2005
Tengo un Jpanel el esta al interior de un JscrollPane

dentro del Jpanel tengo:
un numéro indeterminado de lineas.

JScrollPane==>Jpanel==>muchas Lineas de JtextField

el JScrollPane no hace su trabajo y no puedo ver mas que 8 lineas.

mi codigo es el siguiente:

private JScrollPane jScrlPnTengoelJPanel = new JScrollPane();
private JPanel jPnlLigneEnt = new JPanel();

jPnlLigneEnt.setLayout(null);
jPnlLigneEnt.setAutoscrolls(true);
jScrlPnTengoelJPanel.setBounds(new Rectangle(15, 145, 1000, 180));

jScrlPnTengoelJPanel.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
jScrlPnTengoelJPanel.getViewport().add(jPnlLigneEnt, null);


//metodo por introducir lineas al Jpanel
private void introduirDansPanel(LigneEntretienOb E){
E.getJTxtNumLigne().setBounds(new Rectangle(15, poscDep, 40, 20));
E.getJTxtNumTache().setBounds(new Rectangle(65, poscDep, 70, 20));
E.getJBtnChercheTache().setBounds(new Rectangle(140, poscDep, 35, 20));
E.getJTxtNomTache().setBounds(new Rectangle(185, poscDep, 190, 20));
E.getJTxtDateEntretien().setBounds(new Rectangle(385, poscDep, 90, 20));
E.getJBtnChercheEntretien().setBounds(new Rectangle(480, poscDep, 35, 20));
E.getJTxtDuree().setBounds(new Rectangle(525, poscDep, 90, 20));
E.getJTxtNumEmploye().setBounds(new Rectangle(625, poscDep, 70, 20));
E.getJBtnChercheEmploye().setBounds(new Rectangle(690, poscDep, 35, 20));
E.getJTxtNomEmployee().setBounds(new Rectangle(735, poscDep, 190, 20));
E.getJChkRemover().setBounds(new Rectangle(935, poscDep, 190, 20));

jPnlLigneEnt.setPreferredSize(new Dimension(getWidth(),poscDep+40));
jPnlLigneEnt.validate();

jPnlLigneEnt.add(E.getJTxtNumLigne());
jPnlLigneEnt.add(E.getJTxtNumTache());
jPnlLigneEnt.add(E.getJBtnChercheTache());
jPnlLigneEnt.add(E.getJTxtNomTache());
jPnlLigneEnt.add(E.getJTxtDateEntretien());
jPnlLigneEnt.add(E.getJBtnChercheEntretien());
jPnlLigneEnt.add(E.getJTxtDuree());
jPnlLigneEnt.add(E.getJTxtNumEmploye());
jPnlLigneEnt.add(E.getJBtnChercheEmploye());
jPnlLigneEnt.add(E.getJTxtNomEmployee());
jPnlLigneEnt.add(E.getJChkRemover());
//////
int num=ligneEntretienObj.indexOf(E)+1;
E.getJTxtNumLigne().setText(""+num);
jPnlLigneEnt.repaint();
}

Gracias, Cualquier ayuda sera bien apreciada

chuidiang
14 de Noviembre del 2005
Hola:

Un par de tonterías a ver si te va mejor.

Para que las cosas refrentes a tamaños de componentes (como en el JScrollPane) funcionen, es necesario que cada componente sepa sus tamaños. Si pones layout null, el panel no puede saber su tamaño, ya que habitualmente lo sabe según su layout y los componentes que tiene dentro. Es posible que tu JTextField caiga en parte fuera del panel, el panel coge el tamaño que le da la gana (que no es el del JTextField) y el JScrollPane decide que el panel se ve entero y no hacen falta barras de scroll. Mi consejo es que dentro del panel pongas cualquier layout standard de java que se ajuste a tus necesidades..


Otra tontería, que no sé si afecta, porque nunca he probado a hacerlo como tu lo haces. Yo habitualmente meto en el JScrollPane el componente en cuestión usando el método

scrollPane.setViewportView (panel);

Puedes probar a ver si hay alguna diferencia.
Se bueno