GridLayout
のデフォルトの動作は、コンポーネントが行ごとに左から右に塗りつぶされることです。コンポーネントを列で塗りつぶすように使うことができるのだろうか(左から右へ)ありがとう。GridLayoutを上から下に、次に左から右に塗りつぶす方法は?
4
A
答えて
5
int i = r * ncols + c;
の代わりに の代わりにint i = c * nrows + r;
という方法を1つだけオーバーライドすれば十分です。
public void layoutContainer(Container parent) {
synchronized (parent.getTreeLock()) {
Insets insets = parent.getInsets();
int ncomponents = parent.getComponentCount();
int nrows = rows;
int ncols = cols;
boolean ltr = parent.getComponentOrientation().isLeftToRight();
if (ncomponents == 0) {
return;
}
if (nrows > 0) {
ncols = (ncomponents + nrows - 1)/nrows;
} else {
nrows = (ncomponents + ncols - 1)/ncols;
}
int w = parent.width - (insets.left + insets.right);
int h = parent.height - (insets.top + insets.bottom);
w = (w - (ncols - 1) * hgap)/ncols;
h = (h - (nrows - 1) * vgap)/nrows;
if (ltr) {
for (int c = 0, x = insets.left ; c < ncols ; c++, x += w + hgap) {
for (int r = 0, y = insets.top ; r < nrows ; r++, y += h + vgap) {
int i = r * ncols + c;
if (i < ncomponents) {
parent.getComponent(i).setBounds(x, y, w, h);
}
}
}
} else {
for (int c = 0, x = parent.width - insets.right - w; c < ncols ; c++, x -= w + hgap) {
for (int r = 0, y = insets.top ; r < nrows ; r++, y += h + vgap) {
int i = r * ncols + c;
if (i < ncomponents) {
parent.getComponent(i).setBounds(x, y, w, h);
}
}
}
}
}
}
5
このようなユースケースは、GridLayoutマネージャではサポートされていません。
代わりにGridBagLayout
をご覧になることをお勧めします。GridBagConstraints.gridx
とGridBagConstraints.gridy
で位置を設定できます。
(GridLayout
と同様の挙動が重みを設定し、適切に必ず記入して取得すること。)
2
あなたは、単一のGridLayout
でこれを達成することはできません。ただし、各セルに複数列の単一列のGridLayout
がある1行のGridLayout
を持つことができます。 TableLayout
のような別のLayoutManagerを使用する方が簡単です。
1
お試しになることをお勧めします。MigLayoutあなたはと流れの方向を切り替えることができます
setLayout(new MigLayout("flowy"));
add(component1);
add(component2);
add(component3, "wrap");
add(component4);
add(component5);
add(component6);
MigLayoutでこれを達成するための多くの方法がありますが、私はそれがそんなに優しいのGridBagLayoutよりも使用するようにと同じように可能であり、そうでない場合よりそう見つけます。 BorderLayout、FlowLayout、BoxLayoutなどはもう必要ありません.MyLayoutもそれをすべて行います。
関連する問題
- 1. DataGridViewを上から下へと左から右に塗りつぶす方法
- 2. 左から右にSVG塗りつぶしをアニメ化
- 3. DataGridを上から下に塗りつぶします
- 4. SVGクラウドアイコンの左から右への塗りつぶし
- 5. テーブルセルは、左から右にではなく、上から下へ
- 6. jquery marqueeスクロールを右から左の代わりに上から下へ
- 7. GridLayoutのボタンの親をcolumnCount = "3"で塗りつぶす方法
- 8. GraphViz - メイングラフが左から右の場合、下位グラフを上から下に表示する方法は?
- 9. Kivy:GridLayoutは常に左から右へ、次に上から下へ、左から右へ行くことができますか?
- 10. Java:色でArrayListからシェイプを塗りつぶす方法は?
- 11. 右から左にではなく、下から上へUIViewControllerを閉じる
- 12. ビデオを上部に塗りつぶし、下部にラベルを表示する方法。 (塗りとアンカー)
- 13. ファイルを下から上、右から左に読み込むにはどうしたらいいですか?
- 14. PHP画像上、下、左、右から切り抜く
- 15. Cssトランジション - テキストの下から塗りつぶし
- 16. 左/右/上/下からアニメーションしながらdivでフェードアウトする
- 17. キャンバスのrect要素の塗りつぶしパターンに左上と上隅を設定する方法は?
- 18. ウィジェットを右下ではなく左上にプッシュする方法
- 19. ViewPagerスワイプを右から左に、左から右に無効にする
- 20. データベースから動的にjavaFX treeViewを塗りつぶす
- 21. CSSグラディエント分割を左下から右上に半分に分割する
- 22. アニメーションを読み込んでカスタムビューを作成する方法 - カスタムテキストを左から右に塗りつぶしますか?
- 23. PSTはいつコンテキストを左から右に、右から左に表示しますか?
- 24. テーブルから別のテーブルに塗りつぶし行をコピー
- 25. 左から右へ、右から左への配列のトラバース方法は?
- 26. plot3()で3dの2Dグラフを下に塗りつぶす方法は?
- 27. 幅を右から左に縮小する方法はありますか?
- 28. 左から右にスナックバー
- 29. 左から右にアニメ化
- 30. GridLayoutインデックス0は、左下から開始します。
'preferredLayoutSize'、' minimumLayoutSize'などで同じことをしない限り、それはひどい考えです。 – aioobe
私はそうは思わない。計算を見ると、コンポーネントの最大サイズが計算され、それに応じて行/列が掛け合わされることがわかります。 – StanislavL
ああ、良い点!あなたに+1してください。 :-) – aioobe