【发布时间】:2022-07-22 00:00:09
【问题描述】:
有很多布局管理器,它有点压倒性,我很困惑使用什么布局管理器来在 bg 图像 (BackgroundFrame.java) 顶部显示左面板 (LefrFrame.java) 和左侧。我不知道如何进一步描述它,但我在下面提供了一个插图,以便清楚地解释我的困境。
我为 BackgroundFrame.java 使用了 BorderLayout.CENTER,但我不确定左面板和右面板使用什么布局。正如您从上面提供的插图中看到的那样,我希望左侧面板显示在左侧,但在 BackgroundFrame.java 的顶部(右侧面板也是如此,但在右侧)。 MainFrame 类中的左右面板应该使用什么布局管理器。
除此之外,我还包括了我的部分代码。
BackgroundFrame.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));
}
}
【问题讨论】:
标签: java swing layout layout-manager