1
나는 목록 상자에 리셉션을 생성하는 자바 프로그램을 만들고 있는데, 항목 수, 항목 이름 및 항목 가격을 표시합니다. 그 이름이 중간에 뾰족하고 물품의 수와 비용이 에테르 쪽이되도록 문자열을 덧대어야합니다. 그 문자열의 픽셀 단위로 찾을 수 있습니다 원하는 형식을 달성하는 데 필요한 공간의 수를 계산할 수 있습니다. 감사합니다스윙 JList 글꼴 너비
나는 목록 상자에 리셉션을 생성하는 자바 프로그램을 만들고 있는데, 항목 수, 항목 이름 및 항목 가격을 표시합니다. 그 이름이 중간에 뾰족하고 물품의 수와 비용이 에테르 쪽이되도록 문자열을 덧대어야합니다. 그 문자열의 픽셀 단위로 찾을 수 있습니다 원하는 형식을 달성하는 데 필요한 공간의 수를 계산할 수 있습니다. 감사합니다스윙 JList 글꼴 너비
당신은 문자열의 폭이 얼마나 이것은 : 다시 내가 왜 JList에서 ListCellRenderer를 사용하지, 문질러서 나는 당신의 질문을 읽을 때,
Graphics2D g2d = (Graphics2D)g;
FontMetrics fontMetrics = g2d.getFontMetrics();
int width = fontMetrics.stringWidth("aString");
int height = fontMetrics.getHeight();
...
을하지만?
http://img189.imageshack.us/img189/7509/jlistexample.jpg
을 그리고 여기에 대한 코드입니다 : 그것은 당신이 원하는대로 작동
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);
}
내 업데이트 된 코드를 참조, 나는 그것이 당신이 정말로 원하는 것을 생각! :) – dacwe