Java - No scrolling algunas columnas de jtable

 
Vista:

No scrolling algunas columnas de jtable

Publicado por Diego Gutierrez (2 intervenciones) el 08/06/2007 18:53:54
Hola quisiera saber si es posible hacer que 1 o 2 columnas de una jtable se bloquien al estilo de "inmovilizar Paneles" de excel de tal forma que si muevo la barra horizontal de un scroll panel solamente se dezplacen las demas columnas que no inmobilicé?

Si es posible con algun ejemplo me basta
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

No scrolling algunas columnas de jtable

Publicado por 4l3 (1 intervención) el 04/07/2022 04:29:08
Es muy tarde para la respuesta pero de seguro a alguien mas le podra servir, aca dejo un ejemplo que me encontre por internet cuando tuve la misma interrogante : http://www.java2s.com/Code/Java/Swing-Components/FixedTableColumnExample.htm
y este basicamente es el codigo completo del ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// Example from http://www.crionics.com/products/opensource/faq/swing_ex/SwingExamples.html
/* (swing1.1beta3) */
 
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JViewport;
import javax.swing.UIManager;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.table.AbstractTableModel;
 
/**
 * @version 1.0 12/05/98
 */
 
public class FixedColumnExample extends JFrame {
  Object[][] data;
 
  Object[] column;
 
  JTable fixedTable, table;
 
  public FixedColumnExample() {
    super("Fixed Column Example");
    setSize(400, 150);
 
    data = new Object[][] { { "1", "11", "A", "", "", "", "", "" },
        { "2", "22", "", "B", "", "", "", "" },
        { "3", "33", "", "", "C", "", "", "" },
        { "4", "44", "", "", "", "D", "", "" },
        { "5", "55", "", "", "", "", "E", "" },
        { "6", "66", "", "", "", "", "", "F" } };
    column = new Object[] { "fixed 1", "fixed 2", "a", "b", "c", "d", "e",
        "f" };
 
    AbstractTableModel fixedModel = new AbstractTableModel() {
      public int getColumnCount() {
        return 2;
      }
 
      public int getRowCount() {
        return data.length;
      }
 
      public String getColumnName(int col) {
        return (String) column[col];
      }
 
      public Object getValueAt(int row, int col) {
        return data[row][col];
      }
    };
    AbstractTableModel model = new AbstractTableModel() {
      public int getColumnCount() {
        return column.length - 2;
      }
 
      public int getRowCount() {
        return data.length;
      }
 
      public String getColumnName(int col) {
        return (String) column[col + 2];
      }
 
      public Object getValueAt(int row, int col) {
        return data[row][col + 2];
      }
 
      public void setValueAt(Object obj, int row, int col) {
        data[row][col + 2] = obj;
      }
 
      public boolean CellEditable(int row, int col) {
        return true;
      }
    };
 
    fixedTable = new JTable(fixedModel) {
      public void valueChanged(ListSelectionEvent e) {
        super.valueChanged(e);
        checkSelection(true);
      }
    };
    table = new JTable(model) {
      public void valueChanged(ListSelectionEvent e) {
        super.valueChanged(e);
        checkSelection(false);
      }
    };
    fixedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    fixedTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 
    JScrollPane scroll = new JScrollPane(table);
    JViewport viewport = new JViewport();
    viewport.setView(fixedTable);
    viewport.setPreferredSize(fixedTable.getPreferredSize());
    scroll.setRowHeaderView(viewport);
    scroll.setCorner(JScrollPane.UPPER_LEFT_CORNER, fixedTable
        .getTableHeader());
 
    getContentPane().add(scroll, BorderLayout.CENTER);
  }
 
  private void checkSelection(boolean isFixedTable) {
    int fixedSelectedIndex = fixedTable.getSelectedRow();
    int selectedIndex = table.getSelectedRow();
    if (fixedSelectedIndex != selectedIndex) {
      if (isFixedTable) {
        table.setRowSelectionInterval(fixedSelectedIndex,
            fixedSelectedIndex);
      } else {
        fixedTable
            .setRowSelectionInterval(selectedIndex, selectedIndex);
      }
    }
  }
 
  public static void main(String[] args) {
    FixedColumnExample frame = new FixedColumnExample();
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    frame.setVisible(true);
  }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar