[英]What Layout Manager to use for this Design
有很多布局管理器,它有点压倒性,我对使用什么布局管理器来在 bg 图像(BackgroundFrame.java)和左侧显示左面板(LefrFrame.java)感到困惑. 我不知道如何进一步描述它,但我在下面提供了一个插图,以便清楚地解释我的困境。
我为 BackgroundFrame.java 使用了 BorderLayout.CENTER,但我不确定左面板和右面板使用什么布局。 从上面提供的插图中可以看出,我希望左侧面板显示在左侧,但在 BackgroundFrame.java 的顶部(右侧面板也一样,但在右侧)。 我应该为 MainFrame 类中的左右面板使用什么布局管理器。
除此之外,我还包括了我的部分代码。
背景框架.java
Public class BackgroundFrame extends JPanel {
ImageIcon img;
BufferedImage bufferedImage;
public BackgroundFrame() {
try {
bufferedImage = ImageIO.read(new File("bgpic.png"));
img = new ImageIcon(bufferedImage);
JLabel bg = new JLabel(img);
bg.setSize(500, 500);
add(bg);
} catch (IOException e) {
System.out.println("Error");
//to check if image is showing
}
/*
BufferedImage bufferedImage = ImageIO.read(new File("bg.png"));
img = new ImageIcon("bgpic.png");
JLabel bg = new JLabel(img);
bg.setSize(500, 500);
add(bg);
*/
}
}
MainFrame.java
public class MainFrame extends JFrame {
LeftFrame lf;
RightFrame rf;
BackgroundFrame bg;
public MainFrame() {
super("Layout");
lf = new LeftFrame();
//lf.setLayout(new FlowLayout(FlowLayout.LEFT));
//add(lf, BorderLayout.WEST);
lf.add(this, BorderLayout.WEST);
rf = new RightFrame();
//rf.setLayout(new FlowLayout(FlowLayout.RIGHT));
//add(rf, BorderLayout.PAGE_START);
rf.add(this, BorderLayout.EAST);
bg = new BackgroundFrame();
add(bg, BorderLayout.CENTER);
//bg.add(this, BorderLayout.CENTER);
setSize(5000,5000);
setVisible(true);
this.pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new MainFrame();
}
}
LeftFrame.java
public class LeftFrame extends JPanel {
LeftFrame lf;
TextArea tarea;
public LeftFrame() {
tarea = new TextArea();
add(lf, tarea);
/*
this.setBackground(Color.WHITE);
this.setSize(100, 100);
*/
//lf.setLayout(new FlowLayout(FlowLayout.LEFT));
}
}
我为 BackgroundFrame.java 使用了 BorderLayout.CENTER,但我不确定左面板和右面板使用什么布局。
您的背景图像应由添加到内容窗格下方框架的 LayeredPane 中的 JLabel 显示。 (参见https://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html )
要将四个面板放置在一个网格中,请在 JFrame 的内容窗格中使用 GridLayout,其中包含 2 列和 2 行(请参阅https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html#grid )。 将面板添加到 JFrame 或 JFrame.getContentPane()。
四个面板的布局管理器取决于您要在其中显示的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.