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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д