2011-07-04 5 views
0

JPanelの中​​にHideとShowの2つのオプションを持つコンボボックスを作成しました。ドロップダウンから「表示」を選択すると、コンボボックスの隣に画像が表示され、「非表示」が選択されているときに非表示になります。事前に多くの感謝。 これまでに私が得たことは次のとおりです。画像を表示したり隠すCombboxアクションリスナー

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)) 
); 
+0

私はあなたに理由のためにチュートリアルへのリンクを与えました。チュートリアルを読んでそこに示されているサンプルコードに従ってください。はい、スプーンのコードをコピーするだけではなく、もっと多くのことを学ぶことができ、画像を描くためのカスタムクラスを作成する必要さえないので、もう少し作業します。 – camickr

+0

私はそれを行う専門的なやり方でしたし、私は彼に素敵なきれいなコードを書くのは時間がかかりましたので、彼は私の答えを選んだのです。 – gsfd

答えて

0

を[OK]をので、私はあなたがそう私は私の日食で一緒にいくつかのコードを投げたやりたいことを理解すると思うが、これが何らかの形であなたを助けてくれることを願っています!

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();} 
} 
+0

恐縮です。 – DGT

+0

問題はない、私はそれが助けて欲しい! – gsfd

+0

10年以上のプログラミング経験があり、ちょうど私がそれをやっていることは、レイアウトマネージャを無効にするためにヌルレイアウトを使用するので、いつでもどこでもパネルを置くことができます。塗料をオーバーライドして、 ()が呼び出されると、私は自分のやり方を持っていますが、どうやってそれを行うのですか? – gsfd

0

私はあなたが変更することができます確信しています。それは絵のリストから選択する例があります。JComboBoxのAPIを読み、「コンボボックスを使用する方法」に関するSwingのチュートリアルのセクションへのリンクをたどりますそれはあなたがやりたい。

をあなたはより多くの助けを必要とする場合は、問題を示し、あなたのSSCCEを投稿してください。

+0

ありがとう、camickr。 – DGT