Olá…
Estou tento um problema com uma combobox, eu até consegui colocar imagens nela… o que me acontece é que a combobox só mostra todas as 4 imagens como a mesma de um index só, se mudar o index muda as 4 pra mesma imagem deste outro index.
Quero q apareça as 4 diferentes, mas não achei o que fazer, procurei muito na internet, vi uns posts aqui no GUJ, mas não consegui fazer ainda…
Alguma sugestão?
package View;
import java.awt.*;
import java.net.URL;
import javax.swing.*;
import static javax.swing.SwingConstants.CENTER;
public class Start extends JFrame {
String[] diceStrings = {"Red", "Blue", "Yellow", "Sword"};
Integer[] intArray = new Integer[diceStrings.length];
ImageIcon[] images = new ImageIcon[diceStrings.length];
public Start() {
for (int i = 0; i < diceStrings.length; i++) {
intArray[i] = i;
images[i] = createImageIcon("/IMGS/" + diceStrings[i] + ".png");
}
initComponents();
ComboBoxRenderer renderer = new ComboBoxRenderer();
renderer.setPreferredSize(new Dimension(35, 50));
diceList.setRenderer(renderer);
diceList.setMaximumRowCount(4);
}
protected static ImageIcon createImageIcon(String path) {
URL imgURL = Start.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
diceList = new JComboBox(intArray);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
diceList.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "1", "2", "3", "4" }));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(94, 94, 94)
.addComponent(diceList, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(520, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(57, 57, 57)
.addComponent(diceList, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(427, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Start().setVisible(true);
}
});
}
class ComboBoxRenderer extends JLabel implements ListCellRenderer {
public ComboBoxRenderer() {
setOpaque(true);
setHorizontalAlignment(CENTER);
setVerticalAlignment(CENTER);
}
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
int selectedIndex = diceList.getSelectedIndex();
ImageIcon icon = images[selectedIndex];
setIcon(icon);
return this;
}
}
// Variables declaration - do not modify
private javax.swing.JComboBox<String> diceList;
// End of variables declaration
}
Já até agradeço se alguém responder ^^