Tableau 1D dans un JTable
charlonien
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
charlonien Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
charlonien Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voila mon problème.
Je me suis lancer dans un petit projet en JAVA et mon objectif premier est d'afficher une liste de String dans un JTable au moyen d'un Model.
J'ai donc créer mes deux classe et lors de l'exécution, je remarque que j'ai une belle erreur de type IllégalArgumentException. en parcourant le code de ma JFrame et de mon modèle, vous comprendrez surement que je veut afficher la liste des URL rentrée. Le tableau que je voudrai obtenir serait d'une colonne mais qui prenne quand même de la place.
Voici donc la classe non finie bien sûr de ma fenêtre :
et la classe Model
voila mon problème.
Je me suis lancer dans un petit projet en JAVA et mon objectif premier est d'afficher une liste de String dans un JTable au moyen d'un Model.
J'ai donc créer mes deux classe et lors de l'exécution, je remarque que j'ai une belle erreur de type IllégalArgumentException. en parcourant le code de ma JFrame et de mon modèle, vous comprendrez surement que je veut afficher la liste des URL rentrée. Le tableau que je voudrai obtenir serait d'une colonne mais qui prenne quand même de la place.
Voici donc la classe non finie bien sûr de ma fenêtre :
package youtube; import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; public class GuiUrl extends JFrame{ private RunUrl run = new RunUrl(); private model mod ; private JPanel north = new JPanel(); private JLabel addLabel = new JLabel("add URL : "); private JTextField addText = new JTextField(20); private JButton addButton = new JButton("add URL"); private JPanel center = new JPanel(); private JTable table = new JTable(); private JPanel south = new JPanel(); private JLabel southLabel = new JLabel("Create by Mr Charlonien"); private JScrollPane jsp = new JScrollPane(); public GuiUrl(){ super(); init(); } public void init(){ setTitle(""); setSize(400,350); setLocationRelativeTo(null); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); north(); south(); center(); setVisible(true); run.print(); } public void north(){ getContentPane().add(north, BorderLayout.NORTH); north.setLayout(new FlowLayout(FlowLayout.CENTER)); north.add(addLabel); north.add(addText); north.add(addButton); } public void south(){ getContentPane().add(south, BorderLayout.SOUTH); south.setLayout(new FlowLayout(FlowLayout.CENTER)); south.add(southLabel); } public void center(){ getContentPane().add(center, BorderLayout.CENTER); center.setLayout(new FlowLayout(FlowLayout.CENTER)); mod = new model(run.getLs()); table = new JTable(mod); center.add(new JScrollPane(table)); } }
et la classe Model
package youtube; import java.util.ArrayList; import javax.swing.table.AbstractTableModel; public class model extends AbstractTableModel { private ArrayList<String> ls; public model(ArrayList<String> ls) { this.ls = ls; } private String title[] = { "URL"}; public int getColumnCount() { return title.length; } public String getColumnName(int columnIndex) { return title[columnIndex]; } public int getRowCount() { return ls.size(); } public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { case 1: return ls.get(rowIndex); default: throw new IllegalArgumentException(); } } }
A voir également:
- Tableau 1D dans un JTable
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
2 réponses
"Voici donc la classe non finie bien sûr"
Mais du coup, on ne peux pas tester vu qu'on n'a pas tout le code, donc on ne peux pas reproduire l'erreur d'exécution que tu as !
"j'ai une belle erreur de type IllégalArgumentException"
Est-ce que ce ne serait pas tout simplement celle que tu as dans ton switch ?
Normalement, les indices de colonnes commencent à 0, pourquoi ce "1" ?
Essayes ceci (au pire ça nous donnera peut-être plus d'info)
Mais du coup, on ne peux pas tester vu qu'on n'a pas tout le code, donc on ne peux pas reproduire l'erreur d'exécution que tu as !
"j'ai une belle erreur de type IllégalArgumentException"
Est-ce que ce ne serait pas tout simplement celle que tu as dans ton switch ?
public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { case 1: return ls.get(rowIndex); default: throw new IllegalArgumentException(); } }
Normalement, les indices de colonnes commencent à 0, pourquoi ce "1" ?
Essayes ceci (au pire ça nous donnera peut-être plus d'info)
public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { case 0 : return ls.get(rowIndex); default: throw new IllegalArgumentException("column="+columnIndex); } }
Voici le code manquant il étai constitué de deux classes le RunURL
et le Main
Et dans le désespoir j'avais mis ce 1 car avec 0 sa me renvoyais aussi cette exception
package youtube; import java.io.IOException; import java.util.ArrayList; import java.util.Random; public class RunUrl { private ArrayList<String> ls = new ArrayList<String>(); private int size = 1; public RunUrl() { ls.add(new String("https://www.youtube.com/")); } public void addUrl(String url) { ls.add(url); size++; } public void removeUrl(String url) { } public void openUrl(String url) { Runtime r = Runtime.getRuntime(); try { r.exec("rundll32 url.dll, FileProtocolHandler " + url); } catch (IOException e) { e.printStackTrace(); } } public ArrayList<String> getLs() { return ls; } public int randomAcces() { Random rd = new Random(); int index = rd.nextInt(size) + 1; return index; } public int getSize() { return size; } public void print() { for (String i : ls) { System.out.println(i); } } }
et le Main
package youtube; import java.io.IOException; import java.util.Properties; public class Main { public static void main(String[] args) { new GuiUrl(); } }
Et dans le désespoir j'avais mis ce 1 car avec 0 sa me renvoyais aussi cette exception