2014-01-05 3 views
0

У меня есть этот код, в котором диаграмма Ганта будет отображаться на другом JFrame, кроме основного фрейма пользовательского интерфейса. Есть ли способ, чтобы нарисованная графика здесь была показана на JPanel на основном фрейме пользовательского интерфейса?Содержание конверсии JFrame в JPanel

chart= new JFrame(); 
final ArrayList<Task> tasks = taskList; 
final int ET = processET; 
chart.setSize(300, 300); 
chart.setContentPane(new JPanel(){ 
    public void paint(Graphics g){ 
     for(int j=0;j &lt tasks.size();j++) 
     { 
      int ST = 0; 
      if(j!= tasks.size()-1) ST = tasks.get(j + 1).getStartTime(); 
      else ST = ET; 
      int Product = ST * 20;  
      g.drawRect(50,50,Product,30); 
      g.drawString("p"+tasks.get(j).getPID(),(55+(tasks.get(j).getStartTime()*20)),70); 
      g.drawString(""+tasks.get(j).getStartTime(), (50+(tasks.get(j).getStartTime()*20)),100); 
     } 
     g.drawString(""+ET,50+(ET*20),100); 
     } 
    }); 
    chart.pack(); 
    chart.setLocationRelativeTo(null); 
    chart.setVisible(true); 

Я пробовал этот код, чтобы он поместил его на JPanel, но, очевидно, это не сработало, следовательно, этот запрос. Пожалуйста, помогите и спасибо :)

panel_2 = new JPanel(){ "same thing" }; 
panel.add(panel_2); 
+0

Вам нужно добавить 'панель' в рамку' 'chart'' и вызвать 'chart.pack();'. Тогда это должно сработать. –

+0

Извлечь картину из метода краски. Создайте пользовательский компонент, простирающийся от JPanel, поместите код краски в свой метод paintComponent. Добавьте этот компонент к тому, что вы хотите ... – MadProgrammer

+0

Я предполагаю, что вы хотели бы передать изображение из одного кадра и нарисовать его в другом фрейме. Мы можем достичь этого, используя объект BufferedImage, который может быть передан – user3041058

ответ

2

Есть ли способ, таким образом, что рисованная графика здесь будет показан на JPanel на основной раме UI?

Существует несколько способов. См. this answer. Я думаю, что либо CardLayout, либо JTabbedPane может быть самым простым, учитывая, что код уже отображается в JPanel (который теперь добавляется к кадру для отображения).

+1

Спасибо! Сначала я проверю эту ссылку. – hiakoto