je débute en swing et je bute sur un petit problème tout bête.
Je voudrais récuperer le nombre de lignes visible d'une JList pour
adapter la taille du tableau qui est dans le model associé à la liste.
Le but du jeux étant d'afficher la fin d'un fichier de logs dans une
Frame (un peut comme la commande "tail" unix).
Mais comme le fichier est assez gros, je ne veut pas tout stocker en
mémoire, je ne voudrais stocker que le nombre de lignes nécessaire,
celui qu'on peut afficher.
Je pensait utiliser la méthode "getVisibleRowCount" mais ca me renvoi
toujours 8, kksoit la taille de ma fenêtre.
La methode "getSize" de JComponent renvoit une taille en pixel...
je cherche donc
1) a recuperer le nombre de lignes que ma JList pourrait afficher.
2) etre prévenu du changement de taille si l'utilisateur redimensionne
la fenetre.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Raphael Tagliani
Bonjour,
je débute en swing et je bute sur un petit problème tout bête.
Je voudrais récuperer le nombre de lignes visible d'une JList pour adapter la taille du tableau qui est dans le model associé à la liste.
Le but du jeux étant d'afficher la fin d'un fichier de logs dans une Frame (un peut comme la commande "tail" unix). Mais comme le fichier est assez gros, je ne veut pas tout stocker en mémoire, je ne voudrais stocker que le nombre de lignes nécessaire, celui qu'on peut afficher.
Je pensait utiliser la méthode "getVisibleRowCount" mais ca me renvoi toujours 8, kksoit la taille de ma fenêtre. La methode "getSize" de JComponent renvoit une taille en pixel...
je cherche donc 1) a recuperer le nombre de lignes que ma JList pourrait afficher. Peut-être du côté de wiewport, mais pas sûr...
2) etre prévenu du changement de taille si l'utilisateur redimensionne la fenetre. Ajouter un windowListener sur ta fenêtre.
Merci Pourquoi une JList et pas un JTextArea avec JScrollPane?
Voici un exemple de classe utilisée pour créer un log supplémentaire à la console (mais rien à voir avec tail):
clearButton = new JButton("clear"); clearButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { clear(); }
}); cont.add(clearButton, BorderLayout.SOUTH); // hide but not dispose because it could be called after the closure this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); this.setVisible(true); } /** * singleton construct * @return an instance of the frame, to call non-static methods */ public static LogFrame getInstance() { return LogFrame.logFrame; } /** * add the text you give to the log dsplay * @param logText */ public void append(String logText) { // the frame was probably closed, and every other method calls this one this.setVisible(true); jta.append(logText); } public void appendln(String logText) { jta.append(logText+"n"); } /** * clears the log textArea * this method is public, to use it programmatically if needed */ public void clear() { jta.setText(""); } public void append(StringBuffer sb) { // avoid overflow (don't cast a StringBuffer to a String if it is too big) String strToPrint; while(sb.length()>5000) { strToPrint = sb.substring(0, 5000); jta.append(strToPrint); sb = sb.delete(0, 5000); } jta.append(""+sb); } public void appendln(StringBuffer sb) { this.append(sb); jta.append("n"); } public void appendln() { jta.append("n"); } }
Bonjour,
je débute en swing et je bute sur un petit problème tout bête.
Je voudrais récuperer le nombre de lignes visible d'une JList pour
adapter la taille du tableau qui est dans le model associé à la liste.
Le but du jeux étant d'afficher la fin d'un fichier de logs dans une
Frame (un peut comme la commande "tail" unix).
Mais comme le fichier est assez gros, je ne veut pas tout stocker en
mémoire, je ne voudrais stocker que le nombre de lignes nécessaire,
celui qu'on peut afficher.
Je pensait utiliser la méthode "getVisibleRowCount" mais ca me renvoi
toujours 8, kksoit la taille de ma fenêtre.
La methode "getSize" de JComponent renvoit une taille en pixel...
je cherche donc
1) a recuperer le nombre de lignes que ma JList pourrait afficher.
Peut-être du côté de wiewport, mais pas sûr...
2) etre prévenu du changement de taille si l'utilisateur redimensionne
la fenetre.
Ajouter un windowListener sur ta fenêtre.
Merci
Pourquoi une JList et pas un JTextArea avec JScrollPane?
Voici un exemple de classe utilisée pour créer un log supplémentaire à
la console (mais rien à voir avec tail):
clearButton = new JButton("clear");
clearButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
clear();
}
});
cont.add(clearButton, BorderLayout.SOUTH);
// hide but not dispose because it could be called after the closure
this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
this.setVisible(true);
}
/**
* singleton construct
* @return an instance of the frame, to call non-static methods
*/
public static LogFrame getInstance() {
return LogFrame.logFrame;
}
/**
* add the text you give to the log dsplay
* @param logText
*/
public void append(String logText) {
// the frame was probably closed, and every other method calls this one
this.setVisible(true);
jta.append(logText);
}
public void appendln(String logText) {
jta.append(logText+"n");
}
/**
* clears the log textArea
* this method is public, to use it programmatically if needed
*/
public void clear() {
jta.setText("");
}
public void append(StringBuffer sb) {
// avoid overflow (don't cast a StringBuffer to a String if it is too big)
String strToPrint;
while(sb.length()>5000) {
strToPrint = sb.substring(0, 5000);
jta.append(strToPrint);
sb = sb.delete(0, 5000);
}
jta.append(""+sb);
}
public void appendln(StringBuffer sb) {
this.append(sb);
jta.append("n");
}
public void appendln() {
jta.append("n");
}
}
je débute en swing et je bute sur un petit problème tout bête.
Je voudrais récuperer le nombre de lignes visible d'une JList pour adapter la taille du tableau qui est dans le model associé à la liste.
Le but du jeux étant d'afficher la fin d'un fichier de logs dans une Frame (un peut comme la commande "tail" unix). Mais comme le fichier est assez gros, je ne veut pas tout stocker en mémoire, je ne voudrais stocker que le nombre de lignes nécessaire, celui qu'on peut afficher.
Je pensait utiliser la méthode "getVisibleRowCount" mais ca me renvoi toujours 8, kksoit la taille de ma fenêtre. La methode "getSize" de JComponent renvoit une taille en pixel...
je cherche donc 1) a recuperer le nombre de lignes que ma JList pourrait afficher. Peut-être du côté de wiewport, mais pas sûr...
2) etre prévenu du changement de taille si l'utilisateur redimensionne la fenetre. Ajouter un windowListener sur ta fenêtre.
Merci Pourquoi une JList et pas un JTextArea avec JScrollPane?
Voici un exemple de classe utilisée pour créer un log supplémentaire à la console (mais rien à voir avec tail):
clearButton = new JButton("clear"); clearButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { clear(); }
}); cont.add(clearButton, BorderLayout.SOUTH); // hide but not dispose because it could be called after the closure this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); this.setVisible(true); } /** * singleton construct * @return an instance of the frame, to call non-static methods */ public static LogFrame getInstance() { return LogFrame.logFrame; } /** * add the text you give to the log dsplay * @param logText */ public void append(String logText) { // the frame was probably closed, and every other method calls this one this.setVisible(true); jta.append(logText); } public void appendln(String logText) { jta.append(logText+"n"); } /** * clears the log textArea * this method is public, to use it programmatically if needed */ public void clear() { jta.setText(""); } public void append(StringBuffer sb) { // avoid overflow (don't cast a StringBuffer to a String if it is too big) String strToPrint; while(sb.length()>5000) { strToPrint = sb.substring(0, 5000); jta.append(strToPrint); sb = sb.delete(0, 5000); } jta.append(""+sb); } public void appendln(StringBuffer sb) { this.append(sb); jta.append("n"); } public void appendln() { jta.append("n"); } }
julien balas
je cherche donc 1) a recuperer le nombre de lignes que ma JList pourrait afficher. Peut-être du côté de wiewport, mais pas sûr...
ca a l'air de travailler en pixel. Pour le moment je fait theJList.getSize().height / theJList.getCellBounds(0, 0).height et ca colle pas trop mal, j'ai juste un nullPointerException quand la liste devient trop petite.
2) etre prévenu du changement de taille si l'utilisateur redimensionne la fenetre. Ajouter un windowListener sur ta fenêtre.
merci en fait un ComponentListener convient est reste plus "local" http://java.sun.com/docs/books/tutorial/uiswing/events/examples/ComponentEventDemo.java
Pourquoi une JList et pas un JTextArea avec JScrollPane?
Parceque ca me paraissait plus simple d'afficher une liste de ligne dans une "JList", mais effectivement, pourquoi pas un textArea... Surtout qu'en plus il y a des methodes "getRows" et "getLines" qui pourrait me donner ce que je cherche. Par contre le "model" colle moins avec mon ListModel (Liste de String), il travail au niveau du caractere.
Merci de ton aide -- JB
je cherche donc
1) a recuperer le nombre de lignes que ma JList pourrait afficher.
Peut-être du côté de wiewport, mais pas sûr...
ca a l'air de travailler en pixel.
Pour le moment je fait
theJList.getSize().height / theJList.getCellBounds(0, 0).height
et ca colle pas trop mal, j'ai juste un nullPointerException quand la
liste devient trop petite.
2) etre prévenu du changement de taille si l'utilisateur redimensionne
la fenetre.
Ajouter un windowListener sur ta fenêtre.
merci
en fait un ComponentListener convient est reste plus "local"
http://java.sun.com/docs/books/tutorial/uiswing/events/examples/ComponentEventDemo.java
Pourquoi une JList et pas un JTextArea avec JScrollPane?
Parceque ca me paraissait plus simple d'afficher une liste de ligne dans
une "JList", mais effectivement, pourquoi pas un textArea...
Surtout qu'en plus il y a des methodes "getRows" et "getLines" qui
pourrait me donner ce que je cherche.
Par contre le "model" colle moins avec mon ListModel (Liste de String),
il travail au niveau du caractere.
je cherche donc 1) a recuperer le nombre de lignes que ma JList pourrait afficher. Peut-être du côté de wiewport, mais pas sûr...
ca a l'air de travailler en pixel. Pour le moment je fait theJList.getSize().height / theJList.getCellBounds(0, 0).height et ca colle pas trop mal, j'ai juste un nullPointerException quand la liste devient trop petite.
2) etre prévenu du changement de taille si l'utilisateur redimensionne la fenetre. Ajouter un windowListener sur ta fenêtre.
merci en fait un ComponentListener convient est reste plus "local" http://java.sun.com/docs/books/tutorial/uiswing/events/examples/ComponentEventDemo.java
Pourquoi une JList et pas un JTextArea avec JScrollPane?
Parceque ca me paraissait plus simple d'afficher une liste de ligne dans une "JList", mais effectivement, pourquoi pas un textArea... Surtout qu'en plus il y a des methodes "getRows" et "getLines" qui pourrait me donner ce que je cherche. Par contre le "model" colle moins avec mon ListModel (Liste de String), il travail au niveau du caractere.