Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/02/2016, 19:01
lucho248
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 14 años
Puntos: 5
Jtable y JScrollPane

Hola gente, les traigo una duda puntual que no logro encontrar como resolverlo.
tengo un jframe que contiene un Scroll horizontal y vertical, el cual contiene un JTABLE.
bueno resulta que la tabla es grande tanto horizontalmente como verticalmente.
en lo vertical no tengo problemas.

lo que no se como hacer es para que me quede el scroll horizontal como quiero.
lo que quiero es que el el scroll entre en el frame, pero pueda moverlo horizontalmente porque las columnas son muchas y casi todas con string.

paso fragmento de codigo a ver si a alguien se le ocurre algo.

Código Codigo java:
Ver original
  1. public class ViajesGrilla extends JFrame implements InterfacePanel, InterfacePopupGrilla{
  2.     private JTable tabla;
  3.     private DefaultTableModel model;
  4.     private JScrollPane scrollTabla;
  5.     private DefaultTableCellRenderer alinearCentro, alinearDerecha, alinearIzquierda;
  6.     private TableRowSorter<TableModel> modeloOrdenado;
  7.     private JTextField tfFiltro;
  8.     private JPopupMenu popupMenu;
  9.     private JMenuItem mopEditar, mopAmpliar, mopOpciones;
  10.     private JButton btnAceptar, btnCancelar;
  11.    
  12.     private PantallaPrincipal pp;
  13.    
  14.    
  15.     /**
  16.      * Create the panel.
  17.      */
  18.     public ViajesGrilla(int id, PantallaPrincipal pp)  {
  19.         setTitle("Viajes Grilla");
  20.         this.pp = pp;
  21.        
  22.         int x = 10;
  23.         int y = 10;
  24.         int z = 300;
  25.         this.initAlinear();
  26.        
  27.         getContentPane().setLayout(null);
  28.        
  29.         scrollTabla = new JScrollPane();
  30.         scrollTabla.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
  31.         scrollTabla.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
  32.         scrollTabla.setBounds(x, y, 3*Win.getAnchoPanel(x+25), Win.getAltoPanel(100));
  33.         setBounds(0, 0, Win.getAncho(), Win.getAlto());
  34.         getContentPane().add(scrollTabla);
  35.        
  36.         tabla = new JTable();
  37.         this.init();
  38.         scrollTabla.setViewportView(tabla);
  39.        
  40.         popupMenu = new JPopupMenu();
  41.         addPopup(tabla, popupMenu);
  42.        
  43.         mopAmpliar = new JMenuItem("Ampliar");
  44.         mopAmpliar.addActionListener(new ActionListener() {
  45.             public void actionPerformed(ActionEvent e) {
  46.                 System.out.println("ampliar");
  47.                 Ampliar();
  48.             }
  49.         });
  50.         mopAmpliar.setIcon(new ImageIcon(ViajesGrilla.class.getResource("/VIEW/images/Zoom16.gif")));
  51.         popupMenu.add(mopAmpliar);
  52.        
  53.         mopOpciones = new JMenuItem("Opciones");
  54.         mopOpciones.addActionListener(new ActionListener() {
  55.             public void actionPerformed(ActionEvent e) {
  56.                 System.out.println("opciones");
  57.                 Opciones();
  58.             }
  59.         });
  60.         mopOpciones.setIcon(new ImageIcon(ViajesGrilla.class.getResource("/VIEW/images/Process16.gif")));
  61.         popupMenu.add(mopOpciones);
  62.        
  63.         mopEditar = new JMenuItem("Editar");
  64.         mopEditar.addActionListener(new ActionListener() {
  65.             public void actionPerformed(ActionEvent arg0) {
  66.                 System.out.println("Editar");
  67.                 Editar();
  68.             }
  69.         });
  70.         mopEditar.setIcon(new ImageIcon(ViajesGrilla.class.getResource("/VIEW/images/Edit16.gif")));
  71.         popupMenu.add(mopEditar);
  72.        
  73.         tfFiltro = new JTextField();
  74.         tfFiltro.setBounds(x, Win.getAltoPanel(80), 100, 25);
  75.         getContentPane().add(tfFiltro);
  76.         tfFiltro.setColumns(10);
  77.        
  78.         btnAceptar = new JButton("Aceptar");
  79.         btnAceptar.addActionListener(new ActionListener() {
  80.             public void actionPerformed(ActionEvent e) {
  81.                 salir();
  82.             }
  83.         });
  84.         btnAceptar.setBounds(120, 650, 90, 25);
  85.         getContentPane().add(btnAceptar);
  86.        
  87.         btnCancelar = new JButton("Cancelar");
  88.         btnCancelar.addActionListener(new ActionListener() {
  89.             public void actionPerformed(ActionEvent arg0) {
  90.                
  91.             }
  92.         });
  93.         btnCancelar.setBounds(220, 650, 90, 25);
  94.         getContentPane().add(btnCancelar);
  95.        
  96.         this.autoFiltro();
  97.         this.setVisible(true);
  98.     }
  99.    
  100.     public void init(){
  101.         model = new DefaultTableModel(
  102.                         new Object[][] {
  103.                             {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
  104.                             {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
  105.                             {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},                
  106.                         },
  107.                         new String[] { //23 col
  108.                             "ID", "Nro.Orden1", "Fecha", "Empleador", "Equipo", "Desde", "Hasta", "Entidad", "Pendiente",
  109.                             "Nro.Orden2", "Fecha 2do Viaje", "Cereal", "Tn1", "Tarifa 1", "Tn2", "Tarifa 2", "Total",
  110.                             "Comisión", "% Com.", "IVA21%", "FINAL", "Obs.", "PAGO"
  111.                         }
  112.                     ) {
  113.                         Class[] columnTypes = new Class[] {
  114.                        
  115.                             Float.class, Integer.class, Float.class, Float.class, String.class, String.class
  116.                         };
  117.                         public Class getColumnClass(int columnIndex) {
  118.                             return columnTypes[columnIndex];
  119.                         }
  120.                     };
  121.         /** alinear titulos de tabla **/       
  122.         ((DefaultTableCellRenderer)tabla.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(JLabel.CENTER);
  123.         tabla.setModel(model);
  124.         tabla.getColumnModel().getColumn(0).setMaxWidth(100);
  125.         tabla.getColumnModel().getColumn(1).setMaxWidth(100);
  126.         tabla.getColumnModel().getColumn(2).setPreferredWidth(100);
  127.         tabla.getColumnModel().getColumn(2).setMaxWidth(150);
  128.         tabla.getColumnModel().getColumn(3).setPreferredWidth(100);
  129.         tabla.getColumnModel().getColumn(3).setMaxWidth(200);
  130.         tabla.getColumnModel().getColumn(4).setMaxWidth(200);
  131.         tabla.getColumnModel().getColumn(5).setMaxWidth(250);
  132.         tabla.getColumnModel().getColumn(6).setMaxWidth(250);
  133.         tabla.getColumnModel().getColumn(7).setMaxWidth(300);
  134.         tabla.getColumnModel().getColumn(8).setMaxWidth(100);
  135.         tabla.getColumnModel().getColumn(9).setMaxWidth(100);
  136.         tabla.getColumnModel().getColumn(10).setMaxWidth(150);
  137.         tabla.getColumnModel().getColumn(11).setMaxWidth(200);
  138.         tabla.getColumnModel().getColumn(12).setMaxWidth(200);
  139.         tabla.getColumnModel().getColumn(13).setMaxWidth(200);
  140.         tabla.getColumnModel().getColumn(14).setMaxWidth(200);
  141.         tabla.getColumnModel().getColumn(15).setMaxWidth(200);
  142.         tabla.getColumnModel().getColumn(16).setMaxWidth(250);
  143.         tabla.getColumnModel().getColumn(17).setMaxWidth(200);
  144.         tabla.getColumnModel().getColumn(18).setMaxWidth(100);
  145.         tabla.getColumnModel().getColumn(19).setMaxWidth(100);
  146.         tabla.getColumnModel().getColumn(20).setMaxWidth(200);
  147.         tabla.getColumnModel().getColumn(21).setMaxWidth(400);
  148.         tabla.getColumnModel().getColumn(22).setMaxWidth(200);
  149.        
  150.        
  151.         DAOEquipos de = new DAOEquipos();
  152.         DAOPersona dp = new DAOPersona();
  153.         DAOViajes dv = new DAOViajes();
  154.        
  155.         List<Object> list = dv.list();
  156.         Viaje o;
  157.         Persona empleador;
  158.         Equipo equipo;
  159.        
  160.         if(list.size()>0){
  161.             model.setRowCount(0);
  162.            
  163.             for (Iterator<Object>i = list.iterator(); i.hasNext(); ) {
  164.                 o = (Viaje)i.next();
  165.                 empleador = (Persona)dp.getById(o.getId_empleador());
  166.                 equipo = (Equipo)de.getById(o.getId_equipo());
  167.                                
  168.                 model.addRow(new Object[]
  169.                        
  170. //  "ID", "Nro.Orden1", "Fecha", "Empleador", "Equipo", "Desde", "Hasta", "Entidad", "Pendiente",
  171. //// "Nro.Orden2","Fecha 2do Viaje","Cereal", "Tn1", "Tarifa 1", "Tn2", "Tarifa 2", "Total",
  172. ////"Comisión", "% Com.", "IVA21%", "FINAL", "Obs.", "PAGO"
  173.                          {o.getId(),
  174.                           o.getNroOrden1(),
  175.                           Util.getDate2(o.getFecha1()),
  176.                           empleador.getApellido()+", "+empleador.getNombre(),
  177.                           equipo.getChasis()+"-"+equipo.getAcoplado(),
  178.                           o.getDesde(),
  179.                           o.getHasta(),
  180.                           o.getEntidad(),
  181.                           o.getPendiente(),
  182.                           o.getNroOrden2(),
  183.                           Util.getDate2(o.getFecha2()),
  184.                           o.getCereal(),
  185.                           o.getTn1(),
  186.                           o.getTarifaArrime(),
  187.                           o.getTn2(),
  188.                           o.getTarifaPuerto(),
  189.                           o.getTotal(),
  190.                           o.getComisionValor(),
  191.                           o.getComision(),
  192.                           o.getIVA(),
  193.                           o.getTotalFinal(),
  194.                           o.getObs(),
  195.                           o.getPago()
  196.                          
  197.                          });
  198.                
  199.                 }//fin FOR
  200.         } //fin IF TRUE        
  201.     } //fin INITTABLA

este es el codigo que crea el frame con sus contenidos, metodo que crea y carga el jtable.
lo que quiero es que el el jtable aparezca en el frame, y por un scroll horizontal poder ir hasta el costado derecho final de la tabla, ya que son muchas columnas.
Espero ser claro y no enredar las cosas.
Cualquier sugerencia, sera agradecida.
Saludos.

Última edición por lucho248; 18/02/2016 a las 05:07