我们有一个带有两个JFrame和两个JDesktopPanes的应用程序.我们需要将内部框架从一个框架移动到另一个框架.
我们遇到的问题是,在我们将内部框架从第一个窗口移动到第二个窗口之后,当我们调整第一个窗口的大小时,第二个窗口的内部框架也会调整大小.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
class FirstFrame extends JFrame
{
JDesktopPane desktopPane = new JDesktopPane();
SecondFrame secondFrame;
public FirstFrame(SecondFrame secondFrame)
{
this.secondFrame = secondFrame;
setTitle("FirstFrame example");
setDefaultCloseOperation(EXIT_ON_CLOSE);
add(desktopPane);
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
JMenuItem item = new JMenuItem("Move");
item.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent actionevent)
{
moveFrame();
}
});
menu.add(item);
menuBar.add(menu);
setJMenuBar(menuBar);
}
public void addAnInternalFrame()
{
JInternalFrame frame …Run Code Online (Sandbox Code Playgroud) 我在网上找到了一些代码,我对它进行了一些编辑.我想隐藏JInternalFrame的标题栏.
JInternalFrame frame = new JInternalFrame();
// Get the title bar and set it to null
setRootPaneCheckingEnabled(false);
javax.swing.plaf.InternalFrameUI ifu= frame.getUI();
((javax.swing.plaf.basic.BasicInternalFrameUI)ifu).setNorthPane(null);
frame.setLocation(i*50+10, i*50+10);
frame.setSize(200, 150);
//frame.setBackground(Color.white);
frame.setVisible(true);
desktop.add(frame);
Run Code Online (Sandbox Code Playgroud)
问题是标题栏由于某种原因没有被隐藏.谢谢.
如何在JDesktopPane中激活(有焦点)框架(JInternalFrame)?我需要它用于我的MDI记事本(不是任何人都会使用它,只是一个培训项目).看看api,我只看到函数来获取所有JInternalFrame,而不是活动的.
当我在JDesktopPane中有一个JInternalFrame时,JInternalFrame是可移动的(这很好).但是,可以将它移到JDesktopPane的可见范围之外(我不是很喜欢)
为了亲眼看看,这里有一些示例代码:
public static void main(String[] args) {
JFrame frame = new JFrame("JDesktopPane");
JDesktopPane tableDisplay = new JDesktopPane();
JInternalFrame internalFrame = new JInternalFrame("JInternalFrame",true,true,true,true);
internalFrame.setContentPane(new JLabel("Content"));
internalFrame.pack();
internalFrame.setVisible(true);
tableDisplay.add(internalFrame, JDesktopPane.POPUP_LAYER);
frame.setContentPane(tableDisplay);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setMinimumSize(new Dimension(400, 300));
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
是否可以设置JInternalFrame或JDesktopPane,以便它们不允许这样做?
如何使用java netbeans在MDI(多文档界面)中更改jdesktoppane背景图像?意味着我将jdesktoppane添加到java MDI所以现在我想更改我在java MDI中使用的jdesktoppane的默认背景图像.任何简单的方法?
检查附加的快照链接可能是您将更好地了解我的问题我想要什么.
我有一个真正奇怪的方法,用于隐藏JInternalFrame标题栏.现在的困境是在windows平台下面的方法工作,
((javax.swing.plaf.basic.BasicInternalFrameUI) aXInternalFrame.getUI()).setNorthPane(null);
Run Code Online (Sandbox Code Playgroud)
但不是在Macintosh上!任何专家都有任何想法可以解释内部过程使得这种方法在Mac上无法使用.
是否有任何方法可以在两个平台上隐藏标题栏JInternalFrame?
谢谢
有没有办法以编程方式最小化JInternalFrame?
我正在添加一堆JInternalFrames JDesktopPane,因为用户选择通过菜单打开各种功能.但我希望内部框架在桌面窗格中心打开,而不是左上角,它们似乎是默认的.
如何指定JInternalFrames打开居中,或打开后将它们移动到中心?
jDesktopPane.add(jInternalFrame); // jInternalFrame is not centered!
Run Code Online (Sandbox Code Playgroud) 我试图让JInternalFrame在启动时最大化.我已经对此进行了网络搜索并尝试了各种代码建议,但它们似乎无法在我的机器上正常运行,该机器在Windows 7上运行Java 6.
我已经简化了下面的代码,以便更容易隔离解决方案.
任何人都可以告诉我如何更改下面的代码,以便内部框架在创建时自动最大化?
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
public class MaximizeInternalFrame extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
JLayeredPane desktop;
JInternalFrame internalFrame;
public MaximizeInternalFrame() {
super("Test To Maximize Internal Frame");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Make the big window be indented 50 pixels from each edge of the screen.
int inset = 50;
Dimension screenSize …Run Code Online (Sandbox Code Playgroud) 我遇到了JInternalFrame实施问题.我已经做了JInternalFrame未修饰,所以标题栏和边框JInternalFrame被删除.在以下方案中会出现此问题.
在Windows 7计算机中执行该程序.
JInternalFrame遗体未修饰.从另一台计算机使用远程桌面共享访问Windows 7计算机.
此问题仅在Windows 7计算机中出现,而不在Windows XP中出现.您可以使用其他Windows 7计算机或Windows XP计算机上的远程桌面共享来访问Windows 7计算机.
此外,如果您首先使用远程桌面共享访问计算机,然后执行该程序,则JInternalFrame保留未修饰.
重现步骤
步骤1:在Windows 7计算机中执行应用程序.
步骤2:使用来自其他Windows 7或Windows XP计算机的远程桌面共享访问Windows 7计算机.
第3步:检查应用程序的GUI
结果: - 未标记的标题栏和边框JInternalFrame变为可见.
如果有人遇到过这个问题,或者有人为此问题找到解决方案,请分享您的想法.
下面给出了一个示例代码,您可以使用它来重现此问题.
/*
* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - …Run Code Online (Sandbox Code Playgroud) java ×10
jinternalframe ×10
swing ×10
jdesktoppane ×5
center ×1
jframe ×1
mdi ×1
minimize ×1
netbeans-7 ×1