Java 正确的布局,使JFrame和JInternalFrame在每个屏幕尺寸下都灵活
可能重复:Java 正确的布局,使JFrame和JInternalFrame在每个屏幕尺寸下都灵活,java,swing,layout,jframe,jinternalframe,Java,Swing,Layout,Jframe,Jinternalframe,可能重复: 我正在开发一个Swing应用程序,我对布局很熟悉,我希望我的JFrame和附带的JInternalFrames能够适应屏幕的大小。当JFrame可以最大化或调整大小时,我添加了一个网格布局,但它不起作用。 因此,我要问的是如何添加适当的布局以及如何实现它:D。 请帮助。您确实需要将您的JInternalFrame放入JDesktopPane中,如中所示。如果在JFrame上使用GridLayout,则JDesktopPane将随帧增长。您已经知道如何使框架适合屏幕,例如。作为@Ca
我正在开发一个Swing应用程序,我对布局很熟悉,我希望我的
JFrame
和附带的JInternalFrame
s能够适应屏幕的大小。当JFrame
可以最大化或调整大小时,我添加了一个网格布局,但它不起作用。
因此,我要问的是如何添加适当的布局以及如何实现它:D。
请帮助。您确实需要将您的
JInternalFrame
放入JDesktopPane
中,如中所示。如果在JFrame
上使用GridLayout
,则JDesktopPane
将随帧增长。您已经知道如何使框架适合屏幕,例如。作为@Catalina想法的一个示例,您可以使用setFullScreenWindow()
,如图所示,并将JDesktopPane
添加到框架的中心。不要忘了pack()
您的内部框架
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
/**
* @see https://stackoverflow.com/a/13806057/230513
* @see https://stackoverflow.com/questions/7456227
*/
public class FullScreenTest {
public static final String TITLE = "Full Screen Test";
private final JFrame f = new JFrame(TITLE);
private final JDesktopPane jdp = new JDesktopPane();
public FullScreenTest() {
}
private void display() {
GraphicsEnvironment env =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice dev = env.getDefaultScreenDevice();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JInternalFrame jif = new JInternalFrame(TITLE, true, true, true);
jif.add(new JLabel(TITLE + " " + TITLE), BorderLayout.NORTH);
jif.add(new JLabel(TITLE + " " + TITLE), BorderLayout.CENTER);
jif.add(new JLabel(TITLE + " " + TITLE), BorderLayout.SOUTH);
jif.pack();
jif.setLocation(100, 100);
jif.setVisible(true);
jdp.add(jif);
f.add(jdp, BorderLayout.CENTER);
dev.setFullScreenWindow(f);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new FullScreenTest().display();
}
});
}
}
如果我理解正确,请参见此示例(我认为问题在于您没有使用应与
JInternalFrame
s一起使用的JDesktopPane
):参见示例+1我添加了一个示例。