我试图使用flowlayout
创建一个厨房显示系统,并试图找出一种方法,当第一行已经满了时,在第二行添加另一个面板。GUI的宽度将根据用户的喜好而改变。当更宽时,它应该每行显示更多的组件。
您可以使用FlowLayout
。从如何使用flowlayout
:
FlowLayout
类将组件放在一行中,按其首选大小设置大小。如果容器中的水平空间太小,无法将所有组件放在一行中,则FlowLayout
类将使用多行。如果容器的宽度超过某一行组件所需的宽度,则默认情况下,该行在容器内水平居中。
如果您希望布局在行太多时垂直滚动,可以使用禁用水平滚动的JScrollPane
。您可以使用:
js.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
static class MyPanel extends JPanel implements Scrollable{
@Override
public Dimension getPreferredScrollableViewportSize() {
return this.getPreferredSize();
}
@Override
public int getScrollableUnitIncrement(Rectangle visibleRect,
int orientation, int direction) {
return 50;
}
@Override
public int getScrollableBlockIncrement(Rectangle visibleRect,
int orientation, int direction) {
return 80;
}
/*
* (non-Javadoc)
* @see javax.swing.Scrollable#getScrollableTracksViewportWidth()
*/
@Override
public boolean getScrollableTracksViewportWidth() {
return true;
}
@Override
public boolean getScrollableTracksViewportHeight() {
return false;
}
}
js.setViewportView(myPanelInstance);
在一个GUI程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和PyQt5的layout类 绝对定位 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个元素和窗口的位置。但是这也有局限性: 元素不会随着我们更改窗口的位置和大小而变化。 不能适用于不同的平台和不同分辨率的显示器 更改应用字体大小会破坏布局 如果我
在一个 GUI 程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和 PyQt5 的 layout 类 绝对定位 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个元素和窗口的位置。但是这也有局限性: 元素不会随着我们更改窗口的位置和大小而变化。 不能适用于不同的平台和不同分辨率的显示器 更改应用字体大小会破坏
*label1:combo1 label2:combo2 label3:combo3 label4:text1 label5:text2 label6:text3*
我需要在中制作这样的表。 有什么想法如何做到这一点,以获得像下面图片上的布局吗?
通过指定以像素为单位测量的绝对坐标,可以将GUI小部件放置在容器窗口内。 坐标相对于由其构造函数的size参数定义的窗口的尺寸。 窗口小部件在窗口内的位置由其构造函数的pos参数定义。 import wx app = wx.App() window = wx.Frame(None, title = "wxPython Frame", size = (300,200)) panel = wx
Java中的布局管理器是那些管理容器对象(如Frame, Dialog或Panel中控件放置的类。 布局管理器保持控件在框架中的相对位置,即使分辨率更改或框架本身已调整大小。 这些类实现了Layout interface 。 AWT library中定义了以下布局管理器 - BorderLayout FlowLayout GridLayout CardLayout GridBagLayout Sw