2014-01-25 3 views
0

Я создаю приложение MDI в swing. Я хочу использовать карту хэша для отображения одного JInternalFrame за один раз. Я не могу передать ключи и значения. Я передаю ключ как JInternalJframe name и значение object of JInternalJframe. Я не могу продолжить. Я вставил неполный код. Чтобы вы поняли.открыть один экземпляр JInternalFrame за один раз с использованием хэш-карты

import java.util.*; 
import javax.swing.*; 

public class HashMap { 
     static HashMap <String, JInternalFrame> myMap = new HashMap <>(); 
     //String(key) is the name of JInternalFrame 
     //JInternalFrame(value) is name of object of JInternalFrame 
     public static void main(String [] ashu){ 

     myMap.put("CityMaster",cm); 
     myMap.put("TransportMaster",tm); 
     myMap.put("AccountMaster",am); 
     myMap.put("BankMaster",bm); 

     for (String str: myMap.keySet()){ 
       System.out.println(str); 
     } 
     for (JInternalFrame jf: myMap.values()){ 
       System.out.println(jf); 
     } 
     } 
} 

Я создал JInternalFrame названный выше как Citymaster, Bankmaster и т.д.

+0

Вы говорите, что не можете передавать ключи и значения. Что конкретно означает это? Что происходит, когда вы пытаетесь? Если вы получаете исключение, включите в свой вопрос полную трассировку стека этого исключения. Если вы получаете ошибку компиляции, укажите полный текст ошибки в своем вопросе. – VGR

+0

Можете ли вы привести образец кода для меня. –

ответ

0

Попробуйте это. Нечего объяснять. Я просто добавил некоторые внутренние фреймы в DesktopPane, как вы должны это сделать. Не обращайте внимания на setSize() всюду. Это было просто для краткости и моей лености. Вы не должны использовать установленный размер

import java.awt.BorderLayout; 
import java.awt.event.*; 
import java.beans.PropertyVetoException; 
import java.util.*; 
import java.util.logging.*; 
import javax.swing.*; 

public class HashMapFrame { 

    Map<String, MyInternalFrame> iFrames; 
    String[] keys = {"TransportMaster", "AccountMaster", "BankMaster", 
        "GrandMaster", "WebMaster", "StackOverflowMaster"}; 
    JDesktopPane desktop; 
    JButton button = new JButton("Add Frame"); 
    int index = 0; 
    int x = 0; 
    int y = 0; 

    public HashMapFrame() { 
     desktop = new JDesktopPane(); 
     iFrames = new HashMap<>(); 
     for (String s : keys) { 
      iFrames.put(s, new MyInternalFrame(s, x, y)); 
      x += 30; 
      y += 30; 
     } 

     button.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       if (index < 6) { 
        desktop.add(iFrames.get(keys[index])); 
        iFrames.get(keys[index]).setVisible(true); 
        try { 
         iFrames.get(keys[index]).setSelected(true); 
        } catch (PropertyVetoException ex) { 
         Logger.getLogger(HashMapFrame.class.getName()).log(Level.SEVERE, null, ex); 
        } 
        index++; 
       } 
      } 
     }); 

     JFrame frame = new JFrame(); 
     frame.add(desktop); 
     frame.add(button, BorderLayout.PAGE_END); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(550, 550); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new HashMapFrame(); 
      } 
     }); 
    } 
} 

class MyInternalFrame extends JInternalFrame { 

    public MyInternalFrame(String title, int x, int y) { 
     super(title); 

     setSize(300, 300); 
     setLocation(x, y); 
     setClosable(true); 
    } 
} 
+0

Я хочу это только. сделаю –

+0

Я забыл класс MyInternalFrame. Я только что добавил –

+0

Его хорошо, я отношу эту вещь с 'JInternalFrame'. Мне нужна была логика, и я получил благодарность. –

Смежные вопросы