1

Тема: JInternalFrame - як це зробити

Доброго дня товариство. Таке питання. Є ось така програмка. Там показані 2 JFrame, другий фрейм який створюється кнопкою "OPEN". А як це реалізувати за допомогою JInternalFrame, АЛЕ під внутрішнім фреймом мають бути інші елементи(JPanel i тд).
Перерив купу прикладів і інеті, нічого не знайшов. З JDesktopPane мені не получається так зробити, хоча він для цього і є.

https://drive.google.com/file/d/1yqNFgs7HIP2CVYdggV1nd3S3fWc50M9i/view?usp=sharing

p/s а як тут картинку добавити в пост?

2

Re: JInternalFrame - як це зробити

colin200x написав:

як тут картинку добавити в пост?

imgBB

Подякували: colin200x1

3

Re: JInternalFrame - як це зробити

Для себе проблему рішив наступним чином:

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameListener;
import javax.swing.plaf.InternalFrameUI;
import javax.swing.plaf.basic.BasicInternalFrameUI;

public class Main01 {

  public static void main(final String args[]) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JDesktopPane desktop = new JDesktopPane();
    desktop.setDragMode(JDesktopPane.LIVE_DRAG_MODE);
    
    JInternalFrame if4 = new JInternalFrame("WORKS ");
        InternalFrameUI ifUI = if4.getUI();
        ((BasicInternalFrameUI)ifUI).setNorthPane(null);
        if4.setLayout(new FlowLayout());
        if4.add(new JButton("LIST"));
        try {
            if4.setMaximum(true);
        } catch (PropertyVetoException e) { /* Vetoed by internalFrame possibly add some handling for this case */}
        if4.setVisible(true);
        desktop.add(if4);
    frame.add(new JButton("ok"), BorderLayout.NORTH);
    JButton buttonOpen = new JButton("OPEN");
    buttonOpen.addActionListener(new ActionListener() {      
        @Override
        public void actionPerformed(ActionEvent e) {
            JInternalFrame if3 = new JInternalFrame("New work", false, true, false, false);
            if3.setBounds(50, 50, 300, 100);
            if3.setLayer(5 );
            if3.setVisible(true);
            desktop.add(if3);
        }
    });
    frame.add(buttonOpen, BorderLayout.WEST);
    frame.add(desktop, BorderLayout.CENTER);
    frame.setSize(500, 300);
    frame.setVisible(true);
  }
}