我将JTree和JInternalFrame添加到JDesktopPane中。我想调整JInternalFrame的大小,但是做不到it.But,我可以在里面移动Internalframe。
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.OverlayLayout;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class TableDiff {
public static void main(String[] args) {
JDesktopPane panel = new JDesktopPane() {
// @Override
// public boolean isOptimizedDrawingEnabled() {
// return false;
// }
};
panel.setLayout(new OverlayLayout(panel));
JTree tree = new JTree();
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
for (int i = 0; i < 10; i++) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(i + "x");
for (int j = 0; j < 5; j++) {
node.add(new DefaultMutableTreeNode(i + "x"));
}
root.add(node);
}
tree.setModel(new DefaultTreeModel(root));
JScrollPane tscrollpane = new JScrollPane(tree);
JInternalFrame iFrame = new JInternalFrame("asd");
iFrame.setClosable(true);
iFrame.setMaximizable(true);
iFrame.setResizable(true);
iFrame.setIconifiable(true);
iFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
// tscrollpane.setAlignmentX(1.0f);
// tscrollpane.setAlignmentY(0.0f);
// iFrame.setAlignmentX(0.0f);
// iFrame.setAlignmentY(0.0f);
panel.add(tscrollpane);
panel.add(iFrame);
iFrame.setVisible(true);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);
}
}发布于 2015-10-23 12:45:19
您的问题是使用OverlayLayout。
只需删除以下一行:
panel.setLayout(new OverlayLayout(panel));另外,非常重要的是,不要忘记设置您的JFrame和JInternalFrame的首选大小!
根据Java Swing使用内部框架的Oracle文档(链接)
必须设置内部框架的大小. 如果不设置内部框架的大小,则它将为零大小,因此永远不可见。可以使用下列方法之一设置大小:
setSize、pack或setBounds。
https://stackoverflow.com/questions/33302444
复制相似问题