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);
    }
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы