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);
}
Voir mon code mis à jour, je pense que c'est ce que vous voulez vraiment! :) – dacwe