2017-03-14 5 views
0

アクティブなJInternalFrameの取得に問題があります。私はいくつかの操作を実行するので、私はアクティブなImageInternalFrame(私のクラスは、JInternalFrameを拡張する)を示す必要があります。私はそれを解決する方法を知らない、誰かが私を助けることができますか?Swing:アクティブになる方法JInternalFrame

public class MainFrame extends javax.swing.JFrame { 

    ArrayList <ImageInternalFrame> imageInternalFrameList = new ArrayList(); 


    private void openMenuItemActionPerformed(java.awt.event.ActionEvent evt) {            

     JFileChooser chooser = new JFileChooser(); 
     chooser.showOpenDialog(null); 
     File f = chooser.getSelectedFile(); 
     String filePath = f.getPath(); 

     BufferedImage bufferedImage; 
     ImageInternalFrame imageInternalFrame; 

     String mimetype= new MimetypesFileTypeMap().getContentType(f); 
     String type = mimetype.split("/")[0]; 
     if(type.equals("image")){ 
      bufferedImage = null; 
      try { 
       bufferedImage = ImageIO.read(new File(filePath)); 
      } catch (IOException ex) { 
       Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex); 
      } 

      imageInternalFrame = new ImageInternalFrame(filePath); 

      imageInternalFrame.setSize(bufferedImage.getWidth(), bufferedImage.getHeight()); 
      imageInternalFrame.setVisible(true); 
      imageInternalFrame.setLocation(imageInternalFrameList.size() * 25 , imageInternalFrameList.size() * 25); 
      add(imageInternalFrame); 
      imageInternalFrameList.add(imageInternalFrame); 
     }   
     else{ 
      JOptionPane.showMessageDialog(null, "It's NOT an image"); 
     }} 

public class ImageInternalFrame extends javax.swing.JInternalFrame { 

    public ImageInternalFrame(String imagePath) { 
     initComponents(); 

     setImage(imagePath); 
    } 

    public void setImage(String imagePath){ 
     imageLabel.setIcon(new ImageIcon(imagePath)); 
     imageLabel.paintImmediately(imageLabel.getVisibleRect()); 
    } 
} 
+0

コードスニペット、HTML/XMLや入出力などの構造化文書には、コードの書式設定を使用してください。これを行うには、テキストを選択し、メッセージの投稿/編集フォームの上部にある「{}」ボタンをクリックします。 –

答えて

2

はあなたがあなたのJDesktopクラスのgetSelectedFrame()メソッドを使用することができます。

は、ここに私のコードです。

imageLabel.setIcon(new ImageIcon(imagePath)); 
imageLabel.paintImmediately(imageLabel.getVisibleRect()); 

paintImmeditatelyを使用しないでください。 Swingは、アイコンを変更すると、ラベルの再ペインティングを自動的にスケジュールします。

関連する問題