package com.clearlyspam23.GLE.debug; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.imageio.ImageIO; import javax.swing.DefaultListCellRenderer; import javax.swing.DefaultListModel; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class ListRenderTest extends JFrame { private JPanel contentPane; private JTable table; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { ListRenderTest frame = new ListRenderTest(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public ListRenderTest() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); table = new JTable(); table.setModel(new DefaultTableModel( new Object[][] { {null, null}, }, new String[] { "Icon", "Label" } )); table.getColumnModel().getColumn(0).setPreferredWidth(32); table.getColumnModel().getColumn(0).setMinWidth(32); table.getColumnModel().getColumn(0).setMaxWidth(32); table.getColumnModel().getColumn(1).setPreferredWidth(100); table.getColumnModel().getColumn(1).setMinWidth(100); contentPane.add(table, BorderLayout.CENTER); DefaultListModel<String> model = new DefaultListModel<String>(); model.addElement("hello"); model.addElement("world"); try{ Image img = ImageIO.read(new File("images/TilesetIcon.png")); } catch(Exception e){ e.printStackTrace(); } } private static class ButtonListCellRenderer extends DefaultListCellRenderer { private static final long serialVersionUID = -7799441088157759804L; private static final Color textSelectionColor = Color.BLACK; private static final Color backgroundSelectionColor = Color.CYAN; private static final Color textNonSelectionColor = Color.BLACK; private static final Color backgroundNonSelectionColor = Color.WHITE; private JPanel panel; private JLabel label; private Icon icon; private JButton button; public ButtonListCellRenderer(Image img) { icon = new ImageIcon(img); panel = new JPanel(); panel.setLayout(new FlowLayout()); button = new JButton(); button.setText("V"); button.setPreferredSize(new Dimension(64, 64)); button.setContentAreaFilled(false); button.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { button.setSelected(!button.isSelected()); } }); button.setSelected(false); panel.add(button); label = new JLabel(); panel.add(label); } @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean selected, boolean expanded) { //panel.setSize(list.getPreferredSize()); label.setText(value.toString()); if (selected) { panel.setBackground(backgroundSelectionColor); panel.setForeground(textSelectionColor); } else { panel.setBackground(backgroundNonSelectionColor); panel.setForeground(textNonSelectionColor); } if(button.isSelected()){ button.setIcon(icon); } return panel; } } }