2013-01-05 39 views
0

我以前没有使用过秋千,所以我在看教程:
http://www.zetcode.com/gui/jythonswing/layout/为什么此GroupLayout不能用窗口调整大小?

在底部,有一个使用的GroupLayout来创建一个简单的布局与调整窗口大小的例子。我基本上复制这个例子,并把我自己的控制和布局。但是,当我执行代码时,所有控件都聚集在窗口的左上角,不会移动或调整大小。

我错过了什么?

代码:

#!/usr/local/bin/jython 
# -*- coding: utf-8 -*- 

from java.awt import Dimension 
from java.awt import Color 

from javax.swing import JButton,JList 
from javax.swing import SwingConstants 
from javax.swing import JFrame 
from javax.swing import JLabel 
from javax.swing import JTextArea 
from javax.swing import BorderFactory 
from javax.swing import GroupLayout 


class Example(JFrame): 

    def __init__(self): 
     super(Example, self).__init__() 

     self.initUI() 

    def initUI(self): 

     layout = GroupLayout(self.getContentPane()) 
     self.getContentPane().setLayout(layout) 
     layout.setAutoCreateGaps(True) 
     layout.setAutoCreateContainerGaps(True) 

     self.setPreferredSize(Dimension(350, 300)) 

     self.data = ("one","two","three","four") 
     flist = JList(self.data) 

     edit = JButton("Edit") 
     grab = JButton("Grab") 
     status = JLabel("status") 

     layout.setHorizontalGroup(layout.createParallelGroup() 
       .addGroup(layout.createSequentialGroup() 
        .addComponent(flist) 
        .addGroup(layout.createParallelGroup() 
         .addComponent(edit) 
         .addComponent(grab) 
        ) 
       ) 
       .addComponent(status) 
      ) 

     layout.setVerticalGroup(layout.createSequentialGroup() 
       .addGroup(layout.createParallelGroup() 
        .addComponent(flist) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(edit) 
         .addComponent(grab) 
        ) 
       ) 
       .addComponent(status) 
      ) 

     layout.linkSize(SwingConstants.HORIZONTAL, [edit, grab]) 

     self.pack() 

     self.setTitle("Windows") 
     self.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) 
     self.setLocationRelativeTo(None) 
     self.setVisible(True) 


if __name__ == '__main__': 
    Example() 
+0

不要使用'GroupLayout',这非常复杂,实际上是IDE/GUI构建器使用情况。但它是非常强大的LayoutManager没有错误的。 –

+0

比使用什么?我使用Gtk(HBoxs和VBoxs)。 – bj0

回答

0

BorderLayout这是相当简单的。做类似的事:

from javax.awt import BorderLayout 
from javax.swing import JButton, JFrame 
someButton = JButton("ClickMe") 
frame = JFrame("Funky Jython Program") 
frame.setLayout(BorderLayout()) 
frame.add(someButton,BorderLayout.NORTH) 

这将把一个JButton放在框架的顶部,并为以下按钮使用东,南,西或中心。

+0

我结束了使用BorderLayout和GridBagLayout的组合,但我仍然不知道为什么我不能让GroupLayout工作 – bj0

0

我认为这是因为你只设置了preferredSize ..因此,只显示你喜欢的大小。要调整大小,还应该包括MinimumSize和MaximumSize,这样当你使框架变得更小/更大时,组件会跟随。

PS: hjek - man,这个人问起GroupLayout;他并没有问BorderLayout。你的回答是不合逻辑的。

+1

你认为还是你知道? – slfan