gpt4 book ai didi

java - 选择 jlist 项目时添加图像

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

我有疑问。我不知道我的程序怎么不工作。

import br.com.operacao.Paga;

public class Tela extends JPanel{
JLabel image;
public Tela() {

this.setLayout(new GridBagLayout());


GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.insets = new Insets(5, 5, 5, 5);


String labels[] = { "Coca-Cola", "Fanta Laranja", "Fanta-Uva",
"Sprite"};
final JList<String> list = new JList<String>(labels);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
list.setSelectedIndex(0);


JScrollPane pane = new JScrollPane();
pane.getViewport().add(list);
JPanel firstpanel = new JPanel();
firstpanel.add(pane);
firstpanel.setBackground(Color.BLACK);
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 1;
c.gridheight = 1;
c.weightx = c.weighty = 0.0;
this.add(firstpanel,c);

image = new JLabel();
image.setFont(image.getFont().deriveFont(Font.ITALIC));
image.setHorizontalAlignment(JLabel.CENTER);
updateLabel(labels[list.getSelectedIndex()]); //there is a error here but why?
image.setBorder(BorderFactory.createEmptyBorder(10,0,0,0));

c.gridx = 1;
c.gridy = 0;
c.gridwidth = 1;
c.gridheight = 1;
c.weightx = c.weighty = 0.0;
this.add(image, c);

JScrollPane js = new JScrollPane();
js.setPreferredSize(new Dimension(110,110));
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 3;
c.gridheight = 1;
this.add(js, c);

final JButton comprar = new JButton("Comprar");
comprar.setEnabled(false);
list.addListSelectionListener(new ListSelectionListener() {

public void valueChanged(ListSelectionEvent e) {
int selections[] = list.getSelectedIndices();
//String selectedValue = list.getSelectedValue();
Object selectionValues[] = list.getSelectedValues();
for (int i = 0, n = selections.length; i < n; i++) {
if (i == 0) {
System.out.println("Value" + selectionValues[i] );
}}
comprar.setEnabled(true);

}
});
c.gridx = 0;
c.gridy = 4;
c.gridwidth = 1;
c.gridheight = 1;
this.add(comprar, c);
comprar.addActionListener(new Paga());

final JButton confirma = new JButton("Confirmar");
confirma.setEnabled(false);
c.gridx = 1;
c.gridy = 4;
c.gridwidth = 1;
c.gridheight = 1;
this.add(confirma,c);


}

public void actionPerformed(ActionEvent e) {

JList<String> jl = (JList<String>)e.getSource();
int refriName[] = jl.getSelectedIndices();
updateLabel(refriName); //what is this error?
}
protected void updateLabel(String name) {
ImageIcon icon = createImageIcon("images/" + name + ".jpg");
image.setIcon(icon);
image.setToolTipText("A drawing of a " + name.toLowerCase());
if (icon != null) {
image.setText(null);
} else {
image.setText("Image not found");
}
}

/** Returns an ImageIcon, or null if the path was invalid.*/
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = Tela.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}

}

我需要在我的 gui 中添加一个与 jlist 中所选项目相关的图像...但我不知道我的实现中有什么问题...在我的项目 java 中有一个文件夹 images 和以下图像。

This is my Program

最佳答案

当你打电话时...

updateLabel(labels[list.getSelectedIndex()]);

在构造函数中,很可能还没有选择任何内容,这意味着list.getSelectedIndex()将返回-1不是有效的数组索引...

更好的解决方案可能是将所选索引传递给 updateLabel方法并允许它执行一些健全性检查(例如 >= 0 && < lables.length )

关于java - 选择 jlist 项目时添加图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19437026/

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