Как вставить jpanel внутри jlabel?
Вопрос
Я пишу пользовательский Jlist Cell Renderer для своего рода филекосер.Моя проблема в том, что когда я прочитал мой образец, кажется, что он имеет размер (-1, -1), поэтому я не могу изменять его правильно.Картина - это простая текстура (дерево, металл и т. Д.). Затем я подумал, что если я добавил JPanel вместо изображения, а затем добавляя изображение на панель, я бы даже не должен был изменить размер изображения.
У меня есть 2 возможности:
- прочитайте имиконт с жесткого диска, чтобы у них нет измерения -1, -1
- вставьте jpanel внутри jlabel.
Вот предварительный просмотр моих списков ячеек.
Вот мой пользовательский рендерер, который добавляет значки к клеткам.
.class IconListRenderer extends DefaultListCellRenderer { private Map<Object, Icon> icons = null; public IconListRenderer(Map<Object, Icon> icons) { this.icons = icons; } @Override public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { // Get the renderer component from parent class JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); ImageIcon icon = (ImageIcon)icons.get(value); // Set icon to display for value label.setIcon(icon); label.setText(value.toString()); return label; } }
Решение
Просто замените метку на панель.
Вы можете использовать JPanel
в качестве RenderComponent вместо JLabel
.
Не связан с StackOverflow