Java 重新调整保留在父JFrame中的JInternalFrame的大小,并且此父JFrame已向ComponentMover API注册
我的英语很差,所以请原谅我的语法错误。我是java swings新手,我的目的是动态创建许多jintenalframe,每个jintenalframe都是可移动的,即可以自由拖动并放在任何地方,这是我通过component mover类实现的。现在我面临的问题是,我无法调整这些帧的大小。每当我调整这些JinternalFrame的尺寸时,它们都会恢复到相同的大小。 我甚至在组件侦听器中注册了调整大小事件,代码如下:Java 重新调整保留在父JFrame中的JInternalFrame的大小,并且此父JFrame已向ComponentMover API注册,java,swing,jinternalframe,Java,Swing,Jinternalframe,我的英语很差,所以请原谅我的语法错误。我是java swings新手,我的目的是动态创建许多jintenalframe,每个jintenalframe都是可移动的,即可以自由拖动并放在任何地方,这是我通过component mover类实现的。现在我面临的问题是,我无法调整这些帧的大小。每当我调整这些JinternalFrame的尺寸时,它们都会恢复到相同的大小。 我甚至在组件侦听器中注册了调整大小事件,代码如下: this.addComponentListener(new ComponentA
this.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent ce)
{
setDinamicSize(ce)
}
});
private void setDinamicSize(ComponentEvent ce)
{
JInternalFrame tempFrame = (JInternalFrame)ce.getSource();
tempFrame.setSize(new Dimension(tempFrame.getAlignmentX(),tempFrame.getAlignmenty()));
}
请帮帮我。提前感谢
JDesktopPane
是一个用于JInternalFrame
s的容器,它负责定位和(如果您正确构建了内部框架)调整大小
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class TestDesktopPane {
public static void main(String[] args) {
new TestDesktopPane();
}
public TestDesktopPane() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JDesktopPane pane = new JDesktopPane();
JInternalFrame inFrame = new JInternalFrame("No Hands", true, true, true, true);
inFrame.setBounds(10, 10, 100, 100);
inFrame.setVisible(true);
pane.add(inFrame);
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(pane);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
查看更多详细信息
JDesktopPane
是一个用于JInternalFrame
s的容器,它负责定位和(如果正确构建了内部框架)调整大小
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class TestDesktopPane {
public static void main(String[] args) {
new TestDesktopPane();
}
public TestDesktopPane() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JDesktopPane pane = new JDesktopPane();
JInternalFrame inFrame = new JInternalFrame("No Hands", true, true, true, true);
inFrame.setBounds(10, 10, 100, 100);
inFrame.setVisible(true);
pane.add(inFrame);
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(pane);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
查看更多详细信息为什么不直接使用
JDesktopPane
?如果创建正确,JInternalFrame
应该是可移动和可调整大小的,而不需要任何额外的代码……实际上,内部帧将保留在一个帧内。因为每个jinternalframe都代表一个游戏室,但是您要将jinternalframe
s添加到什么?它们应该与一个JDesktopPane
一起使用……所有这些?到单个JFrame
?或者每一个都是它自己的JFrame
?@MadProgrammer所有的都是一个父JFrame为什么不直接使用JDesktopPane
?如果创建正确,JInternalFrame
应该是可移动和可调整大小的,而不需要任何额外的代码……实际上,内部帧将保留在一个帧内。因为每个jinternalframe都代表一个游戏室,但是您要将jinternalframe
s添加到什么?它们应该与一个JDesktopPane
一起使用……所有这些?到单个JFrame
?或者每个人都有自己的JFrame
?@MadProgrammer所有人都有一个单亲JFrame(高兴地拍手),现在让它顺时针运行@疯狂的程序员向你致敬:):(高兴地拍手)现在让它顺时针走@疯狂的程序员向你致敬:):)