我似乎无法获得一个非常简单的形式,以可预测的方式排列组件。
例如,3个多行文字组件txtTest01
,txtTest02
和txtTest03
。
txtTest01 - 80列,15行
txtTest02 - 50列,15行
txtTest03 - 30列,15行
我试图将它们排成一行,以便txtTest01
位于最前面。然后txtTest02
在txtTest01
之后的下一行开始。 txtTest03
从txtTest02
右侧的列开始,它的右边缘应与第一个文本框txtTest01
对齐。
因此表格顶部应该有1个组件,而它下面应该有2个组件 像这样:
txtTest01txtTest01txtTest01_
txtTest02txtTest02 txtTest03
(这是我正在处理的实际形式的简化,不需要考虑差距。实际表格有列表框,但当然它们没有排队。)
在过去的一周里,我已经尝试过几十种这样的排列,但似乎没有什么可以解决这些问题。这是对我来说最有意义的一个,但它没有产生预期的结果:
layout flowy
txtTest01 wrap
txtTest02 flowx wrap
txtTest03
因此,txtTest01
显示在正确的位置。 txtTest02
包装正确,但它包裹在txtTest01
之后的下一个COLUMN,而不是它之下。 txtTest03
的第一列直接排在txtTest02
的第一列之后。
...是的,我已经阅读了文档,并得出结论我是愚蠢的& amp;需要一些帮助。
答案 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!
)
)
)