2010-11-15 109 views
2

使用现有布局管理器而不是编写处理调整大小函数的侦听器有什么好处?举例来说,我需要安排在网格按钮和中央电网:Java布局管理器

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添加组件,事情会变得更加复杂,而不是简单地添加一些增加或减少。

因此,在这种情况下使用布局管理器会有什么好处,或者是否会使用一些自定义的线更容易使用和维护?

回答

6

你的代码基本上是模仿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); 
+0

好的,在我的实现中可能还有5行代码,但是与我的代码相比,这种方法有没有真正的好处?速度?文件大小? – 2010-11-15 22:46:26

+0

@Glenn,你的代码是特定于你的实现。这不是一个可扩展的解决方案。另外,GirdLayout方法在设置中都被关注。没有必要的特殊事件处理代码。另外,你的方式非常不标准。 – jjnguy 2010-11-15 22:49:11

+0

@Glenn,因为Java是调整大小的东西,所以我认为它更快一些,但我不能保证。 – jjnguy 2010-11-15 22:49:41

1

这有可能是什么东西那么简单,编写自己的代码是很容易的。但是当你发现你需要添加两个新按钮和一个文本区域时会发生什么?我认为学习使用布局管理器是您投资的一个好时机,因为这些知识可以让您轻松扩展GUI的复杂性。 (没有双关语意思;)

+0

事情是,在这个例子中它是一个危险的风格的游戏,所以只会有该地区的按钮。我有一个得分的插槽,就是这样。新元件没有任何机会发挥作用。 – 2010-11-15 22:11:17

1

很酷。现在尝试写入相同的128次(每个屏幕上的每个控件)。这不是游戏的结束。现在尝试更改您的应用程序的图形设计,即再次重写此代码128次。请享用!

+0

我有一个重复20次的按钮,它是扩展JButton类的类的一部分。它并不那么悲惨;) – 2010-11-15 22:17:09