Проблемы в файле .JAR с JTable и DefaultTableModel

#java #swing #for-loop #jtable #defaulttablemodel

#java #swing #для цикла #jtable #defaulttablemodel

Вопрос:

я разрабатываю настольное приложение. Когда я выполняю свой файл .jar на других компьютерах, jframe, в который я загружаю данные в datatable, работает некорректно. Jre одинакова на обоих компьютерах. Jar отлично работает на моем компьютере.

Вот код:

 public int cargarClaseEnVentanaResultados(ConjuntoResultados conjunto, ControladorVentanaResultados cont){    
    ArrayList<JPanel> jpArray= new ArrayList<>();        


    GridBagConstraints c = new GridBagConstraints();
    c.fill = GridBagConstraints.BOTH;
    c.weightx = 1;
    c.weighty = 1;

    String tipoExperimento = new String();
    int contadorVariables = 0;    

    if (!conjunto.getConjuntoResultados().isEmpty()){
        for (int i=0;i<conjunto.getConjuntoResultados().size();i  ){
            JTable jtable = new JTable(){
                public boolean isCellEditable(int rowIndex, int colIndex) {
                    return false;   //Disallow the editing of any cell
                }
            };
            jtable.setRowSelectionAllowed(true);
            jtable.setColumnSelectionAllowed(true);
            jtable.setCellSelectionEnabled(true);
            JPanel jpanel = new JPanel();  
            jpanel.setLayout(new GridBagLayout());
            String[] columnNames ={"Variable","Valor"};
            Object[][] data={};
            DefaultTableModel model = new DefaultTableModel(data,columnNames);
            String nombreConjunto = conjunto.getConjuntoResultados().get(i).getNombreResultado();contadorVariables  ;
            jpanel.setName(nombreConjunto);             
            for (int j=0;j<conjunto.getConjuntoResultados().get(i).getResultados().size();j  ){
                Object[] o = new Object[2];
                String nombreVar = conjunto.getConjuntoResultados().get(i).getResultados().get(j).getNombre().replace(nombreConjunto "_", "");
                o[0] = nombreVar;
                if (conjunto.getConjuntoResultados().get(i).getResultados().get(j).getCadena()!=null){
                    o[1] = conjunto.getConjuntoResultados().get(i).getResultados().get(j).getCadena();
                }else if (conjunto.getConjuntoResultados().get(i).getResultados().get(j).getDoble()!=null){
                    o[1] = conjunto.getConjuntoResultados().get(i).getResultados().get(j).getDoble();
                }else if (conjunto.getConjuntoResultados().get(i).getResultados().get(j).getEntero()!=null){
                    o[1] = conjunto.getConjuntoResultados().get(i).getResultados().get(j).getEntero();
                }
                model.addRow(o);
            }   
            jtable.setModel(model);
            jtable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
            JScrollPane tableContainer = new JScrollPane(jtable);
            jpanel.setPreferredSize(new Dimension(cont.getVentanaResultados().getjTabbedPane2().getWidth()-50,contadorVariables*altoVentana));
            jpanel.add(tableContainer, c);
            jpArray.add(jpanel);
        }
        for (int k=0;k<jpArray.size();k  ){
            aniadirScrollpane(jpArray.get(k), tipoExperimento, cont);
        }
        this.getVentanaResultados().getjTabbedPane2().getSelectedIndex();
    }

    return contadorVariables;
}
  

Единственной причиной, которую я мог себе представить, была java jre, но это то же самое. Есть ли какая-либо причина, по которой таблица не загружается? Он показывает только заголовки и загружает только последнюю вкладку.

Спасибо!

Комментарии:

1. сколько JTables (и других J-компонентов) создается внутри if (!conjunto.getConjuntoResultados().isEmpty()){ ???

2. Откуда вы берете данные? База данных? Локальный файл? Откуда-нибудь из Интернета?

3. @mKorbel Это зависит от размера ConjuntoResultados(), я создам столько, сколько мне нужно. В этом случае я создаю три

4. я получаю данные из другого внешнего jar. Я храню их в локальном классе, созданном мной (ConjuntoResultados)

5. Можете ли вы более точно объяснить, как вы получаете данные? Мне кажется, что проблема есть. Потому что вы сказали, что отображается фрейм и заголовок, но только таблица пуста.