JComboBox: кнопка в выпадающем списке для выбора элемента - Java
Формулировка задачи:
Доброго времени суток.
Пытаюсь сделать следующее: имеется экземпляр JComboBox. При нажатии на него выпадает список неких элементов. Мне нужно чтобы под списком элементов (именно под, а не в нем самом) также появлялась кнопка. Для чего нужна эта кнопка: в выпадающем списке содержатся картинки. Добавляться новые картинки должны следующим образом: при нажатии на кнопку открывается выбор фалов, пользователь выбирает на своем компьютере нужное изображение и оно заносится в экземпляр JComboBox.
Как отображать картинки в JComboBox, реализовать выбор файла - я разобрался. Но не могу добавить кнопку так, чтобы она находилась не в списке картинок, а под ним и к тому же была активной. Пожалуйста подскажите как это можно сделать.
Решение задачи: «JComboBox: кнопка в выпадающем списке для выбора элемента»
textual
Листинг программы
import javax.swing.*; import javax.swing.filechooser.FileFilter; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; public class JCFrame extends JFrame { private String path = "C:\\Temp\\images"; private JFileChooser jFileChooser = new JFileChooser(path); MyComboBox mc = new MyComboBox(); public void selectFile() { jFileChooser.setFileFilter(new FileFilter() { @Override public boolean accept(File f) { if (f.isDirectory()) { return true; } else { String fileName = f.getName().toLowerCase(); return fileName.endsWith(".jpg") || fileName.endsWith(".jpeg"); } } @Override public String getDescription() { return "*.jpg"; } }); int result = jFileChooser.showOpenDialog(JCFrame.this); if (result == JFileChooser.APPROVE_OPTION) { String fileName = jFileChooser.getSelectedFile().getPath(); fileName = fileName.replaceAll("(.*\\\\)", ""); mc.add(fileName,jFileChooser.getSelectedFile().getPath()); } if (result == JFileChooser.CANCEL_OPTION) { } } public JCFrame() throws HeadlessException { JPanel jPanel = new JPanel(new GridLayout(1, 2)); // jPanel.add(new JPanel()); // jPanel.add(new JPanel()); jPanel.add(new JPanel()); mc.add("button",path+"\\button.jpg"); mc.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JComboBox jc = (JComboBox)e.getSource(); if (jc.getSelectedItem() == null) { return; } if(jc.getSelectedItem().equals("button")){ System.out.println("button pressed"); selectFile(); } } }); jPanel.add(mc); add(jPanel, BorderLayout.NORTH); } public static void main(String[] args) { JCFrame frame = new JCFrame(); frame.setSize(400, 200); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д