Je crée un programme Java avec un récept dans une liste, il affichera le nombre d'articles, le nom de l'article et le prix de l'article. J'ai besoin de tamponner la corde de sorte que le nom soit ruffly au milieu et le nombre d'articles et le coût sont à côté de l'éther. Pouvez-vous trouver le avec en pixels des chaînes, puis je peux calculer le nombre d'espaces nécessaires pour atteindre le format désiré. MerciSwing JList largeur de police
1
A
Répondre
2
Voici comment vous obtenez la largeur d'une chaîne:
Graphics2D g2d = (Graphics2D)g;
FontMetrics fontMetrics = g2d.getFontMetrics();
int width = fontMetrics.stringWidth("aString");
int height = fontMetrics.getHeight();
...
Mais, comme je l'ai lu votre question J'pensais, pourquoi ne pas utiliser le ListCellRenderer dans JList? Il fonctionne comme vous voulez:
http://img189.imageshack.us/img189/7509/jlistexample.jpg
Et voici le code pour elle:
public static void main(String... args) {
JFrame frame = new JFrame("Test");
JList list = new JList(new String[] {
"Hello", "World!", "as", "we", "know", "it" });
list.setCellRenderer(new ListCellRenderer() {
@Override
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
JPanel panel = new JPanel(new GridBagLayout());
if (isSelected)
panel.setBackground(Color.LIGHT_GRAY);
panel.setBorder(BorderFactory.createMatteBorder(
index == 0 ? 1 : 0, 1, 1, 1, Color.BLACK));
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.EAST;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(4,4,4,4);
// index
gbc.weightx = 0;
panel.add(new JLabel("" + index), gbc);
// "name"
gbc.weightx = 1;
panel.add(new JLabel("" + value), gbc);
// cost
gbc.weightx = 0;
String cost = String.format("$%.2f", Math.random() * 100);
panel.add(new JLabel(cost), gbc);
return panel;
}
});
frame.add(list);
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
Questions connexes
- 1. Java Swing JList
- 2. Java Swing JList
- 3. Java Swing: Effacer JList sans déclencher d'écoute
- 4. SWING: impossible de réinitialiser l'exposant de police
- 5. Police personnalisée. Garder la largeur de police identique
- 6. save/restore Java swing Élément JList vers/depuis MySQL
- 7. Java Swing: en utilisant JList et défilement automatique JScrollPane
- 8. Java Swing - rendu cellulaire JList personnalisé - actions capture
- 9. MailMerge: Aucune police de largeur fixe?
- 10. Comment calculer la largeur de la police?
- 11. Swing sur la hauteur d'une police Ubuntu
- 12. SVG, texte, police avec largeur/hauteur fixe
- 13. Comment calculer la largeur d'une chaîne de caractères d'une police et d'une taille de police spécifiques?
- 14. .net DrawString Police hébraïque avec des caractères de largeur nulle
- 15. La largeur de police renvoie des valeurs incorrectes
- 16. créant des liens dans JList en java
- 17. Java, Swing: comment définir la largeur maximale d'un JTextField?
- 18. Super simple java swing jlist question que je ne peux pas comprendre!
- 19. comment puis-je insérer une image dans le menu swing JList?
- 20. Comment faire défiler Swing avec "ensureIndexIsVisible"?
- 21. Valeur de réglage dans JList
- 22. JList passer par
- 23. Java ArrayLists dans JList
- 24. JList clearSelection() issue
- 25. Java JList modèle
- 26. Repopulation JList très lente
- 27. Paramètre de police UIManager
- 28. Comment calculer une largeur de champ appropriée?
- 29. Comment puis-je gérer les tailles de police par défaut de l'interface utilisateur swing sans quaqua?
- 30. Comment déterminer le nombre maximal de caractères pour une police à largeur fixe et une largeur maximale en pixels
Voir mon code mis à jour, je pense que c'est ce que vous voulez vraiment! :) – dacwe