Combobox actionlistener显示和隐藏图像

时间:2011-07-04 23:44:34

标签: java

我创建了一个有两个选项的组合框:在JPanel中隐藏和显示。我想知道如何编写动作监听器,因此当我从下拉列表中选择“显示”时,组合框旁边会出现一张图片,并在选择“隐藏”时隐藏它。提前谢谢了。 以下是我到目前为止所做的事情。

myPanel = new javax.swing.JPanel();
myLabel = new javax.swing.JLabel();
myComboBox = new javax.swing.JComboBox();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

myLabel.setText("myLabel:");

myComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Hide", "Show" }));

javax.swing.GroupLayout myPanelLayout = new javax.swing.GroupLayout(myPanel);
myPanel.setLayout(myPanelLayout);
myPanelLayout.setHorizontalGroup(
    myPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(myPanelLayout.createSequentialGroup()
.addGap(28, 28, 28)
.addComponent(myLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(myComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(237, 237, 237))
);
myPanelLayout.setVerticalGroup(
    myPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(myPanelLayout.createSequentialGroup()
.addGap(44, 44, 44)
.addGroup(myPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(myLabel)
    .addComponent(myComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(36, Short.MAX_VALUE))
);

2 个答案:

答案 0 :(得分:0)

阅读JComboBox API并按照Swing教程中关于“如何使用组合框”的部分的链接。它有一个从图片列表中选择的例子。我相信你可以修改它来做什么你想要的。

如果您需要更多帮助,请发布展示问题的SSCCE

答案 1 :(得分:0)

好的,所以我想我明白你想做什么,所以我在日食中把一些代码放在一起,希望这能以某种方式帮助你!

package com.detter.john;

import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import javax.swing.*;
import java.io.*;
import java.awt.event.*;

public final class ComboBoxExample extends JFrame implements ActionListener
{
    public ComboBoxExample()
    {
        super("Combo Box Example");
        setLayout(null);
        panel = new JPanel();

        box = new JComboBox(options);
        box.addActionListener(this);

        panel.add(box);
        panel.setSize(100,100);
        panel.setLocation(0,0);
        panel.setVisible(true);

        imagePanel = new ImagePanel();
        add(panel);
        add(imagePanel);

        setSize(WIDTH,HEIGHT);
        setLocation(X,Y);
        setResizable(false);
        setVisible(true);
    }

    public class ImagePanel extends JPanel
    {
        public ImagePanel()
        {
            try
            {
                showing = true;
                image = ImageIO.read(new File("..\\Combobox action listener to show" +
                    " and hide an image\\Images\\SampleImage.PNG"));
            }catch(Exception e){e.printStackTrace();}

            setSize(WIDTH,HEIGHT);
            setLocation(X,Y);
            setVisible(true);
        }

        public void showImage()
        {
            showing = true;
            repaint();
        }

        public void hideImage()
        {
            showing = false;
            repaint();
        }

        public void paint(Graphics g)
        {
            Graphics2D g2 = (Graphics2D)g;
            g2.clearRect(0,0,WIDTH,HEIGHT);
            if(showing)
                g2.drawImage(image,0,0,null);
        }

        private boolean showing;
        private BufferedImage image;

        private static final int WIDTH = 100;
        private static final int HEIGHT = 100;
        private static final int X = 100;
        private static final int Y = 0;
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource()==box)
        {
            switch(box.getSelectedIndex())
            {
                case SHOW:
                    imagePanel.showImage();
                break;
                case HIDE:
                imagePanel.hideImage();
                break;
            }
        }
   }

    private JPanel panel;
    private ImagePanel imagePanel;
    private JComboBox box;
    private String options[] = {"show","hide"};

    private static final int SHOW = 0;
    private static final int HIDE = 1;

    private static final int X = 0;
    private static final int Y = 0;
    private static final int WIDTH = 206;
    private static final int HEIGHT = 132;

    public static void main(String args[]){new ComboBoxExample();}
}