gpt4 book ai didi

java - 激活 JComboBox 上的 ActionListener setSelectedItem()

转载 作者:行者123 更新时间:2023-12-01 13:13:18 26 4
gpt4 key购买 nike

我在 JDialog 中有一个以 JComboBox 开头的表单:

myJComboBox = new JComboBox(itemOfBox);
myJpanel.add(myJComboBox);

当我不关心我的默认 itemOfBox 是什么时,我默认显示一些 JSlider。

当我从 JDialog 用户界面更改 itemOfBox 时,我的 myJComboBox 上有一个 ActionListener,它会更改 itemOfBox 函数中的 JSlider(范围、默认值等)。到目前为止,一切正常,因为我不关心我的默认 itemOfBox。

现在我想保持所有这些工作,但要补充一点,如果我有一个 requiredItemOfBox,则能够将 myJComboBox 设置为它,而且还可以激活新 itemOfBox 上 myJComboBox 上的 ActionListener(现在是我的 requiredItemOfBox) )

myJComboBox.setSelectedItem(requiredItemOfBox);

因此,当我没有 requiredItemOfBox (在本例中为“”,因此前一行对程序没有任何作用)时,我的 JComboBox 的第一项具有默认值和默认 JSliders,当我选择列表中的另一项,我有我的 ActionListener 来处理它。

当我有 requiredItemOfBox (!) 时,我设法让 JDialog 选择它,但每次我都必须再次单击它来更新我的 JSliders。

我该如何解决这个问题?

感谢您的帮助,并对我的英语感到抱歉。

最佳答案

我在这里猜测一下。

由于您正在设置选定的项目,因此您可以自己执行操作监听器代码。诀窍是对你的 Action 监听器进行编码,就像我的一个项目中的这个监听器一样。

package com.ggl.crossword.controller;

import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;

import com.ggl.crossword.view.CrosswordFrame;

public class CreateImageActionListener implements ActionListener {

private CrosswordFrame frame;

private JPanel panel;

public CreateImageActionListener(CrosswordFrame frame,
JPanel panel) {
this.frame = frame;
this.panel = panel;
}

@Override
public void actionPerformed(ActionEvent event) {
writeImage();
}

public void writeImage() {
FileFilter filter =
new FileNameExtensionFilter("PNG file", "png");
JFileChooser fc = new JFileChooser();
fc.setFileFilter(filter);
int returnValue = fc.showSaveDialog(frame.getFrame());
if (returnValue == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
if (!file.getAbsolutePath().endsWith(".png")) {
file = new File(file.getAbsolutePath() + ".png");
}
RenderedImage image = createImage(panel);
try {
ImageIO.write(image, "png", file);
} catch (IOException e) {
e.printStackTrace();
}
}
}

private BufferedImage createImage(JPanel panel) {
int w = panel.getWidth();
int h = panel.getHeight();
BufferedImage bi = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
panel.paint(g);
g.dispose();
return bi;
}

}

您可以将监听器实例保留为类字段并执行listener.writeImage()。这样,您就可以执行 Action 监听器代码,而不必触发 Action 监听器本身。

关于java - 激活 JComboBox 上的 ActionListener setSelectedItem(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22668701/

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