如何在 Swing 中绘制布局单元格及其边缘?
How to draw cells of layouts and their edges in Swing?
在 Swing(也是 AWT)中,LayoutManager
s 确定 Component
s 在 Container
中的大小和位置,而不绘制边缘和线条...
对于某些教育目标,如何划定这些界线?(例如覆盖 Container
的 paintComponents()
class 等等...)
一个解决方案是根据每个布局的规则计算一切以获得坐标,但是有没有办法使用布局本身来做到这一点?
如果您希望所有组件都有边框,则可以使用循环。以下方法将为 JFrame
的内容窗格中的所有 Swing 组件(实际上是 JComponent
s)绘制边框:
Container cont = frame.getContentPane();
Component[] components = cont.getComponents();
List<JComponent> list = new ArrayList<>();
for (Component comp : components) {
if (comp instanceof JComponent) {
list.add((JComponent) comp);
}
}
for (JComponent jComponent : list) {
jComponent.setBorder(BorderFactory.createLineBorder(Color.black,2));
}
这是你得到的(忽略菜单栏,它来自上一个问题):
在 Swing(也是 AWT)中,LayoutManager
s 确定 Component
s 在 Container
中的大小和位置,而不绘制边缘和线条...
对于某些教育目标,如何划定这些界线?(例如覆盖 Container
的 paintComponents()
class 等等...)
一个解决方案是根据每个布局的规则计算一切以获得坐标,但是有没有办法使用布局本身来做到这一点?
如果您希望所有组件都有边框,则可以使用循环。以下方法将为 JFrame
的内容窗格中的所有 Swing 组件(实际上是 JComponent
s)绘制边框:
Container cont = frame.getContentPane();
Component[] components = cont.getComponents();
List<JComponent> list = new ArrayList<>();
for (Component comp : components) {
if (comp instanceof JComponent) {
list.add((JComponent) comp);
}
}
for (JComponent jComponent : list) {
jComponent.setBorder(BorderFactory.createLineBorder(Color.black,2));
}
这是你得到的(忽略菜单栏,它来自上一个问题):