gpt4 book ai didi

java - 可以检测双击 JComboBox 项目吗?

转载 作者:行者123 更新时间:2023-12-02 01:38:39 25 4
gpt4 key购买 nike

我向学校提出了一个问题,要求当“双击 JComboBox 中的项目”时,我应该更改 JFrame 的背景颜色。

使用 ItemListenerActionListener 可以实现这一点吗?或者我需要使用 MouseListener 来实现?

代码:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;

public class ColorSelection extends JFrame {

String[] colorNames = {
"Black", "Blue"
};
Color colors[] = {
Color.BLACK, Color.BLUE
};
JComboBox coloursComboBox = new JComboBox(colorNames);
ColorItemListener colorItemListener = new ColorItemListener(this);

public ColorSelection() {
super("My color combobox");

coloursComboBox.addItemListener(colorItemListener);

add(coloursComboBox, BorderLayout.NORTH);

setSize(600, 600);
setVisible(true);
}

public class ColorItemListener implements ItemListener {

ColorSelection colorSelection;

public ColorItemListener(ColorSelection colorSelection) {
this.colorSelection = colorSelection;
}

@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
if (e.getItem().toString().equals("Black")) {
colorSelection.getContentPane().setBackground(Color.BLACK);
} else {
colorSelection.getContentPane().setBackground(Color.BLUE);
}
}
}
}

public static void main(String[] args) {
new ColorSelection();
}
}

最佳答案

不知道是否可行,因为单击鼠标后复选框的弹出窗口会关闭。

但是,如果可能的话,我建议您需要将 MouseListener 添加到已添加到组合框弹出窗口中的 JList。

创建组合框后,您可以使用如下代码将 MouseListener 添加到 JList:

JComboBox comboBox = new JComboBox(...);
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);

if (child instanceof BasicComboPopup)
{
BasicComboPopup popup = (BasicComboPopup)child;
JList list = popup.getList();
list.addMouseListener(...);
}

关于java - 可以检测双击 JComboBox 项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54815866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com