代码之家  ›  专栏  ›  技术社区  ›  Glenn Nelson

Java布局管理器

  •  2
  • Glenn Nelson  · 技术社区  · 14 年前

    使用现有布局管理器与编写处理大小调整函数的侦听器相反有什么好处?例如,我需要在网格中排列按钮并使网格居中:

    int h = component.getHeight() / 11;
    int w = component.getWidth() / 9;
    int offsetX = w;
    int offsetY = h;
    int x = (2 * column) * w - offsetX;
    int y = (2 * row) * h - offsetY;
    
    setBounds(x, y, w, h);
    

    我写了一小段代码,每次调整JPanel的大小时都会为按钮激活,而不是在布局管理器上摸索。如果我要使用布局管理器,编写代码来安排所有内容会更麻烦;如果我要说在JPanel中添加一个组件,事情会变得更加复杂,而不是简单地添加一些加减法。

    因此,在这种情况下使用布局管理器有什么好处吗?或者一些定制的行更易于使用和维护吗?

    3 回复  |  直到 14 年前
        1
  •  5
  •   jjnguy Julien Chastang    14 年前

    你的代码基本上是模仿 GridLayout .

    setLayout(new GridLayout(11, 9));
    // add all the components
    ...
    // Profit
    

    要使其居中:

    JPanel outerPanel = new JPanel(new BorderLayout());
    JPanel gridPanel = new JPanel(new GridLayout());
    outerPanel.add(gridPanel, BorderLayout.CENTER);
    
        2
  •  1
  •   zigdon    14 年前

    对于这么简单的事情来说,编写自己的代码是很容易的。但是当你发现你需要添加两个新按钮和一个文本区域时会发生什么呢?我认为学习使用布局管理器是一个很好的投资时间,因为这些知识将允许你很容易地缩放GUI的复杂性。(不是双关语;)

        3
  •  1
  •   AlexR    14 年前

    很酷。现在尝试写同样的128次(对于每个屏幕上的每个控件)。比赛还没有结束。现在尝试更改应用程序的图形设计,即再次重写此代码128次。享受吧!