Откройте JPopupMenu из открытого JComboBox
Я хотел бы изменить поведение OOTB в выпадающем списке, заморозить его после щелчка правой кнопкой мыши (легко определить, какая кнопка была нажата, так что это не главное) и открыть JPopupMenu вместо выбора этой записи.
Итак - как отключить выбор записи по заданному условию и использовать тогда собственное поведение?
Я попытался начать с добавления слушателей мыши ко всем компонентам списка, но безуспешно - ничего не изменилось
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class MainClass {
public static void main(final String args[]) {
final String labels[] = { "A", "B", "C", "D", "E" };
JFrame frame = new JFrame("Selecting JComboBox");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComboBox comboBox = new JComboBox(labels);
frame.add(comboBox, BorderLayout.SOUTH);
frame.setSize(400, 200);
frame.setVisible(true);
for (Component c : comboBox.getComponents()) {
c.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("cli");
super.mouseClicked(e);
}
public void mousePressed(MouseEvent e) {
System.out.println("pre");
super.mousePressed(e);
}
});
}
}
}
1 ответ
Решение
в Swing не возможно показывать два облегченных всплывающих контейнера в один и тот же момент
есть грязный хак о множестве
JPopup
в тяжелом весено я бы предложил смешать
AWT Container
сSwing JComponents
и использоватьAWT.Popup
сSwing.JComponent
(JMenuItem
или жеJButton
)