【问题标题】:Adding a list of images in jscrollpane and show it在 jscrollpane 中添加图像列表并显示它
【发布时间】:2013-10-17 15:08:24
【问题描述】:

我需要在 jscrollpane 中添加一些图像,并在使用相对图像选择我的 jlist 字符串时显示正确的图像......但我有一些疑问。

    public class Tela{
    private JList<String> list;

    public Tela(){

        JFrame display = new JFrame();
        display.setTitle("Maquina de Refrigerante");
        String labels[] = { "Coca-Cola", "Fanta Laranja", "Fanta-Uva", 
                 "Sprite"};
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));


        JPanel firstPanel = new JPanel();
        JPanel buttonPanel = new JPanel();

        JPanel secondPanel = new JPanel();
        //downPanel.add(BorderLayout.SOUTH);
        //downPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 30, 260));
        secondPanel.setBackground(Color.WHITE);
        secondPanel.setPreferredSize(new Dimension(110,110));

        final JButton comprar = new JButton("Comprar");
        comprar.setEnabled(false); 


        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);
        firstPanel.add(pane);

        list.addListSelectionListener(new ListSelectionListener() {

            @Override
            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);

            }
        });


        ImageIcon image = new ImageIcon("assets/fantalogo.jpg");
        JScrollPane jsp = new JScrollPane(new JLabel(image));
        panel.add(jsp);

        buttonPanel.add(comprar);
        buttonPanel.add(Box.createRigidArea(new Dimension(0,4)));
        buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

        panel.add(firstPanel);
        panel.add(secondPanel);
        panel.add(buttonPanel);
        //panel.add(buttonPanel, BorderLayout.CENTER);
        panel.setBackground(Color.BLACK);

        display.add(panel);
        display.setSize(550, 500);
        display.setLocationRelativeTo(null);
        display.setDefaultCloseOperation(display.EXIT_ON_CLOSE);
        display.setVisible(true);

        comprar.addActionListener(new Paga());
    }


}

在我的代码中如何实现它并查看正确的输出?

【问题讨论】:

  • 正如建议:为什么不使用ListCellRendererJList 本身中添加图片和描述,而是使用单独的JScrollPane 来保存图片?
  • @dic19 我需要在我的名称(标签)列表中选择一个项目并相对于这个渲染正确的图像我如何使用 ListCellRenderer?
  • @Wesley,你读过教程了吗???
  • @camickr 是的,但我不知道如何使用它。 JPanel secondPanel = new JPanel(); ImageIcon image = new ImageIcon("assets/fantalogo.jpg"); JScrollPane jsp = new JScrollPane(new JLabel(image)); secondPanel.add(jsp); 在这种情况下,当我选择一个项目时我可以使用图像列表,我的图像更改符合我的项目吗?
  • 不知道怎么用是什么意思?本教程可以满足您的需求。从一个工作示例开始,然后根据您的要求对其进行修改。

标签: java swing jscrollpane jlabel jlist


【解决方案1】:

查看 How to Use Combo Boxes 上的 Swing 教程部分。您会找到一个几乎完全符合您要求的示例。该示例使用组合框,但 JList 的代码将非常相似。也就是说,组合框包含一个字符串列表,当您选择一个项目时,会显示匹配的图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多