如何在MigLayout中正确排列这些组件

时间:2014-05-28 20:36:50

标签: clojure miglayout

我似乎无法获得一个非常简单的形式,以可预测的方式排列组件。

例如,3个多行文字组件txtTest01txtTest02txtTest03

  

txtTest01 - 80列,15行
  txtTest02 - 50列,15行
  txtTest03 - 30列,15行

我试图将它们排成一行,以便txtTest01位于最前面。然后txtTest02txtTest01之后的下一行开始。 txtTest03txtTest02右侧的列开始,它的右边缘应与第一个文本框txtTest01对齐。

因此表格顶部应该有1个组件,而它下面应该有2个组件 像这样:

  

txtTest01txtTest01txtTest01_
  txtTest02txtTest02 txtTest03

(这是我正在处理的实际形式的简化,不需要考虑差距。实际表格有列表框,但当然它们没有排队。)

在过去的一周里,我已经尝试过几十种这样的排列,但似乎没有什么可以解决这些问题。

这是对我来说最有意义的一个,但它没有产生预期的结果:

layout flowy
txtTest01 wrap
txtTest02 flowx wrap
txtTest03

因此,txtTest01显示在正确的位置。 txtTest02包装正确,但它包裹在txtTest01之后的下一个COLUMN,而不是它之下。 txtTest03的第一列直接排在txtTest02的第一列之后。

...是的,我已经阅读了文档,并得出结论我是愚蠢的& amp;需要一些帮助。

2 个答案:

答案 0 :(得分:0)

这是我从你那里得到的一个粗略的解释:

    public static void main(String[] args) {

        JFrame frame = new JFrame();
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);

        JPanel mainPanel = new JPanel(new MigLayout("debug, fill, wrap 2", "[grow 2, fill][grow 1, fill]", "[grow, fill]"));

        mainPanel.add(new JTextArea("Textarea 1"), "spanx 2");
        mainPanel.add(new JTextArea("Textarea 2"), "");
        mainPanel.add(new JTextArea("Textarea 3"), "");


        frame.setContentPane(mainPanel);
        frame.setVisible(true);

    }

答案 1 :(得分:0)

虽然以下内容仍然简化,并且已经修改为包含其他组件,但这是Tom的建议的Clojure结果。如果有人在使用Clojure / Seesaw / MigLayout时遇到困难,我希望这会有所帮助:

  (ns seesaw02.core
  (:require [seesaw.core :as s])
  (:gen-class)
  ( :use [ seesaw core mig ] )
  )

( s/native! )


( def nNumberOfTextBoxColumns 80 )


( def txtOutput
  ( s/text :multi-line? true :font "MONOSPACED-PLAIN-14"
:text
"This
is
the
text
output
box"
  )
)

( .setColumns txtOutput ( - nNumberOfTextBoxColumns 30 ) )
( .setRows txtOutput 15 )




( def txtInput ( s/text :font "MONOSPACED-PLAIN-14" :background "#888" :foreground :blue ) )
( .setColumns txtInput nNumberOfTextBoxColumns )


( def txtExtraInput 
  ( s/text :multi-line? true :font "MONOSPACED-PLAIN-14"
:text
"This
is
the
Extra
Input
textbox"
  )
)

( .setColumns txtExtraInput ( - nNumberOfTextBoxColumns 30 ) )
( .setRows txtExtraInput 15 )


(def lbHistory ( s/listbox :model ( -> '( "what" "the" "heeeeell" "is" "going" "on?" ) )))


( def mpTest ( mig-panel :constraints [ "fill, wrap 2", "[ grow 2, fill ] [ grow 1, fill ]", "[ grow, fill ]" ] ) )
( def frmTest ( s/frame :content mpTest :on-close :exit ) )
( add! mpTest [ txtOutput "spanx 2" ] )
( add! mpTest [ txtInput "spanx 2" ] )
( add! mpTest [ txtExtraInput ] )
( add! mpTest [ lbHistory ] )


(defn -main
  [& args]
  ( s/invoke-later
    (
      doto frmTest
      s/show!
      s/pack!
    )
   )
 )