有很多布局管理器,这有点让人不知所措,我不知道使用什么布局管理器来显示bg图像(BackgroundFrame.java)顶部和左侧的左面板(lerframe.java)。我不知道如何进一步描述它,但为了清楚地解释我的困境,我在下面提供了一个说明。
除此之外,我还包括了我的部分代码。
背景框架。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);
*/
}
}
大型机。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();
}
}
左撇子rame.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));
}
}
我使用了BorderLayout. CENTER for the Background Frame.java但我不确定左面板和右面板使用什么布局。
您的背景图像应该由添加到内容窗格下方框架的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()。
四个面板的布局管理器取决于您希望在其中显示的内容。
我试图使用创建一个厨房显示系统,并试图找出一种方法,当第一行已经满了时,在第二行添加另一个面板。GUI的宽度将根据用户的喜好而改变。当更宽时,它应该每行显示更多的组件。
在一个GUI程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和PyQt5的layout类 绝对定位 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个元素和窗口的位置。但是这也有局限性: 元素不会随着我们更改窗口的位置和大小而变化。 不能适用于不同的平台和不同分辨率的显示器 更改应用字体大小会破坏布局 如果我
在一个 GUI 程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和 PyQt5 的 layout 类 绝对定位 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个元素和窗口的位置。但是这也有局限性: 元素不会随着我们更改窗口的位置和大小而变化。 不能适用于不同的平台和不同分辨率的显示器 更改应用字体大小会破坏
*label1:combo1 label2:combo2 label3:combo3 label4:text1 label5:text2 label6:text3*
我需要在中制作这样的表。 有什么想法如何做到这一点,以获得像下面图片上的布局吗?
在项目中,我们通常都会有布局组件的概念,常见的场景是整个项目通用的头尾,侧边栏,以及整体布局结构等,这些布局内容被抽象成组件,包含一些布局样式,用于组合其它组件搭建成页面。 说白了,其实它本质上还是一种组件,将布局样式抽象成组件,能够保持子组件和父组件的独立性,不用在其中关联到布局信息。 如我们的样例项目中的 MainLayout.jsx: // ./components/MainLayout/M