View Full Version : [java]JTable numero di righe in base a mese
RaouL_BennetH
22-01-2007, 15:56
Salve a tutti :)
Volevo chiedervi se potevate suggerirmi un modo per ottenere questo:
Necessito di una JTable che non abbia un numero prefissato di righe, ma che le generi in base al mese che viene scelto su un qualche tipo di oggetto (che confesso di non sapere ancora quale).
Per esempio, se la scelta del mese è febbraio, mi crei automaticamente 28 righe, se novembre 30 righe etc....
In C# riesco a farlo facilmente con un oggetto di tipo DateTimePicker e con un oggetto DataGridView, in un modo del genere:
//codice ed oggetti di C#
DataGridView.Rows.Count = DateTimePicker.SelectedMonth.GetDaysInMonth;
Mi indichereste se c'è un modo altrettanto facile in Java?
Grazie Mille.
RaouL.
yorkeiser
22-01-2007, 16:10
Eccoti un esempio, lo puoi fare direttamente dal costruttore
public class MyTable extends JTable{
public MyTable()
{
super();
}
public MyTable(int row, int col)
{
super(row, col);
}
}
class Launch
{
public static void main (String[] args)
{
Calendar cal = new GregorianCalendar(1999, Calendar.FEBRUARY, 1);
int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
MyTable(days,<colonne>);
}
}
Eccoti un esempio, lo puoi fare direttamente dal costruttore
public class MyTable extends JTable{
public MyTable()
{
super();
}
public MyTable(int row, int col)
{
super(row, col);
}
}
class Launch
{
public static void main (String[] args)
{
Calendar cal = new GregorianCalendar(1999, Calendar.FEBRUARY, 1);
int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
MyTable(days,<colonne>);
}
}Non vedo la necessità di estendere JTable solo per specificare il numero di righe. :p
Basta creare un JTable usando uno dei suoi costruttori, quindi o usando un table-model, o passando già un set di dati o specificando il numero di righe/colonne.
yorkeiser
22-01-2007, 16:36
Non vedo la necessità di estendere JTable solo per specificare il numero di righe. :p
Basta creare un JTable usando uno dei suoi costruttori, quindi o usando un table-model, o passando già un set di dati o specificando il numero di righe/colonne.
E il codice che ho postato cosa fa, scusa? :)
E' prolisso, ma era giusto per mostrare l'utilizzo del costruttore
RaouL_BennetH
22-01-2007, 16:39
Non vedo la necessità di estendere JTable solo per specificare il numero di righe. :p
Basta creare un JTable usando uno dei suoi costruttori, quindi o usando un table-model, o passando già un set di dati o specificando il numero di righe/colonne.
Innanzitutto, grazie ad entrambi per l'interessamento :ave:
Tento di esporvi meglio il mio problema:
Ho già realizzato questo programminoino in C# e devo convertirlo in Java.
Non è niente di complicato (ovviamente per voi, per me già hello world è un traguardo :) )
Ho un form, in cui devo piazzare vari controlli di tipo textbox, combobox, bottoni et similia.
La mia prima difficoltà in Java, è appunto di avere a disposizione una griglia (che se non ho capito male posso associare alla JTable) nella quale l'utente dovrà inserire alcuni dati. Ora, non c'è una predeterminazione per il mese che dovrà scegliere l'utente per immettere i dati, da qui la mia richiesta di generare il numero di righe a run time in base al mese scelto. Le colonne invece sono un numero predeterminato.
La seconda è più complessa difficoltà (sempre per me) è di "tradurre" i metodi e le proprietà che ho a disposizione in .NET per l'oggetto DataGridView per la JTable. Ma questa la posso affrontare in un secondo momento. Dato che documentandomi credo di aver capito che sia più il framework .NET ad avere attinto alle sterminate librerie di Java, avrei bisogno soltanto che qualcuno di voi più esperto mi guidi con piccoli suggerimenti e input a svolgere al meglio questo mio primo compito un pò più impegnativo, nel senso che vorrei iniziare a scrivere in maniera abbastanza corretta già dall'inizio (con la consapevolezza che è ovvio che più si va avanti più ci si migliora).
Grazie ancora :)
RaouL.
RaouL_BennetH
22-01-2007, 16:59
ad ogni modo, ho problemi a capire il funzionamento dell'esempio di yorkeiser:
import javax.swing.table.AbstractTableModel;
import java.util.Calendar;
import java.util.*;
public class JTest {
public JTest()
{
super();
}
public JTest(int row, int col)
{
super(row, col);
}
}
class Launch
{
public static void main(String[] args)
{
Calendar cal = new GregorianCalendar(2007, Calendar.JANUARY, 1);
int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
JTest(days, 8);
}
}
Compilandolo questo è l'errore che mi da:
JTest.java:13: Object() in java.lang.Object cannot be applied to (int,int)
super(row, col);
^
JTest.java:23: cannot find symbol
symbol : method JTest(int,int)
location: class Launch
JTest(days, 8);
^
2 errors
RaouL_BennetH
22-01-2007, 17:31
ehm... :ops2: :doh:
per favore, non tenete conto di quanto postato qui sopra... correggo il codice e poi vi richiederò aiuto .....
grazie.
Questo è un semplice esempio:
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class TabellaGiorniFrame extends JFrame
{
private JScrollPane scrollPane;
private JTable table;
public TabellaGiorniFrame ()
{
super ("Tabella giorni");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (300, 300);
Calendar cal = new GregorianCalendar (2007, Calendar.JANUARY, 1);
int days = cal.getActualMaximum (Calendar.DAY_OF_MONTH);
table = new JTable (days, 4);
scrollPane = new JScrollPane (table,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add (scrollPane);
}
public static void main (String[] args)
{
SwingUtilities.invokeLater (new Runnable()
{
public void run ()
{
TabellaGiorniFrame f = new TabellaGiorniFrame ();
f.setVisible (true);
}
});
}
}Poi bisogna vedere cosa si vuole fare ...
RaouL_BennetH
22-01-2007, 17:51
Poi bisogna vedere cosa si vuole fare ...
Al momento mi è veramente più che sufficiente per ragionarci su per bene :ave:
Devo provare a farla diventare identica a quella che ho sul C# (che è il mio obiettivo primario).
Grazie a tutti per il momento, torno a seccarvi fra poco :)
RaouL.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.