07/10/10 7:44
rosario.damore
La Classe che ho modificato è questa:
Ho provato a salvare i valori nell'array output_valori ma mi stampa in console questo:
[I@15601ea
[I@15601ea
[I@15601ea
[I@15601ea
[I@15601ea
Mi date una mano? Grazie
import java.awt.Component; import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; public class MatriceJTable extends javax.swing.JFrame { String[] prova; private boolean done = false; /** Creates new form JTable */ public MatriceJTable() { initComponents(); } @SuppressWarnings("unchecked") private void initComponents() { prova = new String[5]; prova[0] = "Valuta l'attributo X con l'attributo Y"; prova[1] = "Valuta l'attributo X con l'attributo Z"; prova[2] = "Valuta l'attributo X con l'attributo W"; prova[3] = "Valuta l'attributo X con l'attributo K"; prova[4] = "Valuta l'attributo X con l'attributo J"; output = new String[prova.length]; output_valori = new int[prova.length]; TableColumn column = null; Component comp = null; int headerWidth = 0; int cellWidth = 600; dm = new DefaultTableModel(); mioOggetto = new Object[prova.length][2]; for (int i = 0; i < prova.length; i++) { mioOggetto[i][0] = prova[i]; mioOggetto[i][1] = new String(); } dm.setDataVector(mioOggetto, new Object[] { "Valutazione Attributo X", "Valore" }); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(dm); jButton1 = new javax.swing.JButton(); // Prendo le dimensioni del desktop Dimension dim_schermo = Toolkit.getDefaultToolkit().getScreenSize(); // Calcolo la posizione orizzontale della finestra int posX = (int) (dim_schermo.width - getWidth())/4; // Calcolo la posizione verticale della finestra int posY = (int) (dim_schermo.height - getHeight())/4; // Posiziono la finestra setLocation(posX, posY); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Valutazione Confronto Attributo X"); jTable1.setFont(new java.awt.Font("Arial", 0, 12)); //Fiddle with the Sport column's cell editors/renderers. setUpSportColumn(jTable1, jTable1.getColumnModel().getColumn(1)); DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); renderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER); jTable1.setDefaultRenderer(jTable1.getColumnClass(0), renderer); jTable1.updateUI(); jTable1.getTableHeader().setResizingAllowed(false); jTable1.getTableHeader().setReorderingAllowed(false); jTable1.setAlignmentX(Component.CENTER_ALIGNMENT); jTable1.setAlignmentY(Component.CENTER_ALIGNMENT); jTable1.setCellSelectionEnabled(true); jTable1.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); jTable1.setRowHeight(33); jScrollPane1.setViewportView(jTable1); TableCellRenderer headerRenderer = jTable1.getTableHeader().getDefaultRenderer(); for (int i = 0; i < 1; i++) { column = jTable1.getColumnModel().getColumn(i); comp = headerRenderer.getTableCellRendererComponent( null, column.getHeaderValue(), false, false, 0, 0); headerWidth = comp.getPreferredSize().width; column.setPreferredWidth(Math.max(headerWidth, cellWidth)); } jButton1.setFont(new java.awt.Font("Arial", 0, 18)); jButton1.setText("OK"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(166, 166, 166) .addComponent(jButton1) .addContainerGap(175, Short.MAX_VALUE)) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 293, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton1) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); }// </editor-fold> public void setUpSportColumn(JTable table, TableColumn sportColumn) { //Set up the editor for the sport cells. comboBox = new JComboBox(); comboBox.addItem("1"); comboBox.addItem("2"); comboBox.addItem("3"); comboBox.addItem("4"); comboBox.addItem("5"); comboBox.setFont(new java.awt.Font("Arial", 0, 18)); comboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5" })); comboBox.setAlignmentX(Component.CENTER_ALIGNMENT); comboBox.setAlignmentY(Component.CENTER_ALIGNMENT); comboBox.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); comboBox.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR)); sportColumn.setCellEditor(new DefaultCellEditor(comboBox)); //Set up tool tips for the sport cells. DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); renderer.setToolTipText("Clicca per Selezionare il Valore"); sportColumn.setCellRenderer(renderer); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: for (int i=0; i<prova.length; i++){ output[i] = (String) comboBox.getSelectedItem(); output_valori[i] = Integer.parseInt(output[i]); System.out.println(output_valori); } setDone(true); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new MatriceJTable().setVisible(true); } }); } // Variables declaration - do not modify private String[] output; private int[] output_valori; public JComboBox comboBox; private javax.swing.JButton jButton1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; DefaultTableModel dm; Object mioOggetto[][]; // End of variables declaration /* public double visualizza() { int rating; this.setVisible(true); while (!isDone()){} rating = jSlider1.getValue(); this.dispose(); return rating; }*/ public boolean isDone() { return done; } public void setDone(boolean done) { this.done = done; } }
Ho provato a salvare i valori nell'array output_valori ma mi stampa in console questo:
[I@15601ea
[I@15601ea
[I@15601ea
[I@15601ea
[I@15601ea
Mi date una mano? Grazie
aaa
07/10/10 7:48
rosario.damore
se vi può aiutare, potete incollare il codice in eclipse e vedere che il programma parte e compila.
aaa
07/10/10 14:26
paoloricciuti
Innazi tutto avrai bisogno di un'array di combobox e non di un singolo combobox perchè altrimenti il valore selezionato sarà sempre e solo l'ultimo che selezionerai. Riguardo agli strani valori che ti stampa la soluzione è molto semplice:
Come potrai osservare in questa parte di codice tu stampi output_valori che è l'array. Dunque quello che vedi stampato è esattamente la locazione di memoria dell'array. Andando a modificare come segue
Otterrai stampati 5 volte l'ultimo valore. Per evitare questo come ti dicevo, dovrai inserire un array di combobox e modificare ancora di conseguenza il codice in questo modo
for (int i=0; i<prova.length; i++){ output[i] = (String) comboBox.getSelectedItem(); output_valori[i] = Integer.parseInt(output[i]); System.out.println(output_valori); }
Come potrai osservare in questa parte di codice tu stampi output_valori che è l'array. Dunque quello che vedi stampato è esattamente la locazione di memoria dell'array. Andando a modificare come segue
for (int i=0; i<prova.length; i++){ output[i] = (String) comboBox.getSelectedItem(); output_valori[i] = Integer.parseInt(output[i]); System.out.println(output_valori[i]); }
Otterrai stampati 5 volte l'ultimo valore. Per evitare questo come ti dicevo, dovrai inserire un array di combobox e modificare ancora di conseguenza il codice in questo modo
for (int i=0; i<prova.length; i++){ output[i] = (String) comboBox[i].getSelectedItem(); output_valori[i] = Integer.parseInt(output[i]); System.out.println(output_valori[i]); }
aaa