I'm relatively new to java and even newer to swinb, but I'm trying to
make a drop down menu of sorts using a JCombobox using JButtons. I
got my Buttons to render correctly, but they seem to have lost their
button capabilities. What class must I extend, and how must I do it
so that they regain their normal Component functionality.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CustomRendererMenu extends JPanel {
ImageIcon[] images;
String[] choiceStrings = {"Selected", "All", "Column", "Row"};
public CustomRendererMenu() {
super(new BorderLayout());
Integer[] intArray = new Integer[choiceStrings.length];
for (int i = 0; i < choiceStrings.length; i++) {
intArray[i] = new Integer(i);
}
JComboBox buttonList = new JComboBox(intArray);
ComboBoxRenderer renderer= new ComboBoxRenderer();
renderer.setPreferredSize(new Dimension(50, 50));
buttonList.setRenderer(renderer);
add(buttonList, BorderLayout.PAGE_START);
setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
}
private static void createAndShowGUI() {
//Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Drop Down Menu Chooser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent newContentPane = new CustomRendererMenu();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
class ComboBoxRenderer extends JLabel
implements ListCellRenderer {
public ComboBoxRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
int selectedIndex = ((Integer)value).intValue();
final String name = choiceStrings[selectedIndex];
JButton choice = new JButton(name);
choice.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("The " + name + "has been pressed.");
}
});
return choice;
}
}
}
Hal Rosser - 12 Jun 2004 02:06 GMT
myButton.addActionListener(componentYouWantToListenForTheClick);
> I'm relatively new to java and even newer to swinb, but I'm trying to
> make a drop down menu of sorts using a JCombobox using JButtons. I
[quoted text clipped - 77 lines]
> }
> }