0
package javaapplication1;

import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class JavaApplication1 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        final JFrame frame = new JFrame();
        final NewJPanel p = new NewJPanel();
        frame.setTitle("Frame");
        frame.setSize(300, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
        device.setFullScreenWindow(frame);
        device.setDisplayMode(new DisplayMode(800, 600, 32, 60));


        JButton btn = new JButton();
        btn.setText("Button");
        JPanel panel = new JPanel();

        panel.add(btn);
        frame.add(panel);

        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                JFrame f = new JFrame();
                JPanel p = new JPanel();
                f.setSize(300, 300);
                p.setBackground(Color.red);

                f.add(p);
                f.setLocationRelativeTo(null);
                f.setAlwaysOnTop(true);
                f.setVisible(true);
            }
        });
    }
}

我希望f.setVisible(true);在我单击按钮时设置为模态的全屏 JFrame 中弹出。我怎样才能做到这一点?因为在该代码中,当我单击按钮时,会在f.setVisible(true);全屏 JFrame 之外显示。期待您的回答。

4

1 回答 1

3

所以你想要JInternalFrame在你的 main 里面有类似的东西JFrame

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class JavaApplication1 {

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                final JFrame frame = new JFrame();
                final JDesktopPane desktopPane = new JDesktopPane();
                frame.setTitle("Frame");
                frame.setSize(300, 300);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                final GraphicsDevice device = GraphicsEnvironment
                    .getLocalGraphicsEnvironment().getDefaultScreenDevice();
                device.setFullScreenWindow(frame);
                device.setDisplayMode(new DisplayMode(800, 600, 32, 60));

                JButton btn = new JButton();
                btn.setText("Button");
                JPanel panel = new JPanel();

                panel.add(btn);
                frame.add(panel, BorderLayout.NORTH);
                frame.add(desktopPane, BorderLayout.CENTER);

                btn.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        JInternalFrame f = new JInternalFrame();
                        JPanel p = new JPanel();
                        p.setBackground(Color.red);
                        f.setSize(300, 300);
                        f.setResizable(true);
                        f.add(p);
                        f.setVisible(true);
                        desktopPane.add(f);
                    }
                });
            }
        });

    }
}

在此处输入图像描述

更多关于JInternalFrame你可以在这里找到

于 2012-12-25T18:56:05.327 回答