У меня та же проблема с двумя компонентами JTextField и JComboBox, я предполагаю, что решение, которое я ищу, решит ее для всех компонентов.
Я установил размер компонентов по умолчанию, поэтому их размер соответствует исходному содержимому, которое я ему предоставил. когда я изменяю содержимое компонента так, чтобы оно превышало область компонента, я не вижу весь текст, и я хотел бы, чтобы размер моего компонента изменялся, чтобы соответствовать тексту.
Как я могу это сделать?
Обновление:
Пакет () на рамке только увеличил текстовое поле, как я могу сделать то же самое и увеличить поле со списком?
Обновление:
private class ComboBoxRenderer extends JLabel implements ListCellRenderer {
private static final long serialVersionUID = 752379460716217273L;
Dimension maxSize=new Dimension();
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
setText(value.toString());
Dimension size = getPreferredSize();
if(maxSize.width<size.width)
maxSize.width=size.width;
if(maxSize.height<size.height)
maxSize.height=size.height;
resolutionDescriptor_ComboBox.setPreferredSize(maxSize);
return this;
}
}
это работает, не очень эффективно, но это первый шаг, дело в том, что он не учитывает размер изображения кнопки, поэтому часть текста все еще не отображается, но размер компонента изменяется, у вас есть какие-либо предложения?
Адам.
Отвечать:
Это сработало вместе с pack(), повторная проверка не требуется.
private class ComboBoxRenderer extends JLabel implements ListCellRenderer {
private static final long serialVersionUID = 752379460716217273L;
Dimension maxSize=new Dimension();
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
setText(value.toString());
Dimension size = getPreferredSize();
if(maxSize.width<size.width) {
maxSize.width=size.width;
resolutionDescriptor_ComboBox.setPrototypeDisplayValue(value.toString());
}
if(maxSize.height<size.height)
maxSize.height=size.height;
return this;
}
}
убедитесь, что вы разрабатываете что-то более эффективное, чем это...
Обновление:
и в пакете () нет необходимости!
Адам.