問題タブ [layout-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
433 参照

java - Swing:レイアウトマネージャと上位レベルのレイアウトマネージャとの適切な相互作用?

カスタム LayoutManager を試していますが、それ自体が上位レベルのレイアウト マネージャーを持つコンポーネント内でそれを使用することの微妙な点を理解していません。

ここに画像の説明を入力

以下は、JPanel のペアで 2 つのフレームを作成するテスト プログラムです。2 つの JPanel にはそれぞれ細い黒い境界線があり、WeirdGridLayout を使用して子コンポーネントを強制的にグリッド内の四角形にします。JPanel の高さは幅から計算されます。両方の JPanel は、BorderLayout を使用する細い赤い境界線を持つ別の JPanel にあります。

一方のフレームでは、WeirdGridLayout の JPanel が EAST と WEST に配置され、もう一方は NORTH と SOUTH に配置されています。

問題は、北/南のケースで、フレームの幅/高さを変更すると、WeirdGridLayout を持つ 2 つの JPanel のサイズは適切ですが、適切な位置ではありません (ギャップがあるか、垂直に重なっています)。

ここに画像の説明を入力

東/西の場合、それは間違った結果になります。

ここに画像の説明を入力

レイアウト マネージャーを外部のレイアウト マネージャーとうまく連携させるにはどうすればよいですか?

0 投票する
3 に答える
1184 参照

java - Swing: vertically stacked components without MigLayout

I finally got the behavior I want for vertically stacking components that have a preferred height that changes with time. But I needed to use MigLayout.

Is there a way to do this w/o MigLayout? (It's for a library and I don't want to force the dependency unless I have to)

Here's the behavior I'm looking for (which my test program achieves):

enter image description here

In vertical order, there's a resize button, "empty space" (well, a JLabel marked as such), a red rectangle, and a green square. The resize button has fixed height. The red square has a random size that can change at arbitrary times. The green square sets its preferred height to match its width, and I want to expand its width to fill the container. The empty space expands horizontally and vertically to fill the remaining space in the container.

What would work instead of MigLayout?

0 投票する
2 に答える
1553 参照

java - JLabel.setVisible(false)は、他のコンポーネントの位置を変更します

私のswingアプリケーションにあるリレーアウトの問題に遭遇しました。GridBagLayoutを使用して4つのコンポーネント(2つのJLabel、1つのJTextFieldと1つのテーブル、それぞれが1つの行を占める)をパネルに追加します。一部のロジックでは、1つのラベルをtrueまたは表示する必要があります。いくつかの条件に基づいてfalseですが、setVisible(false)を呼び出すと、このラベルの下のコンポーネントが少し表示され、setVisible(true)を呼び出すと、少し下がってGUIが点滅します。他のコンポーネントをパネルに貼り付ける方法はありますか?ありがとう。

0 投票する
6 に答える
3513 参照

java - Java Swing: 正しい LayoutManager の選択

私はPropertyPanelを構築しています。現在、値を指定できる とそれに対応するフィールドGridLayoutを管理するためにを使用しています。JLabelsしかし、問題は、GridLayoutが列のサイズを自動的に管理することです。つまり、同じ幅になります。

これは、大きな値フィールドがある場合、列が大きくなっている (これは良いことです) が、他の列 (すべてのJLabels) も同様に大きくなっていることを意味します。スクリーンショットは次のとおりです。

ここに画像の説明を入力     < 悪い

ご覧のとおり、imageプロパティには大きな値があり、両方の列が大きくなり、s の後に多くのスペースがありJLabelます。

だから、私はLayoutManager各列を必要なだけ大きくする を探しています。
このようなレイアウトが必要です(Gimpで編集されています):

ここに画像の説明を入力     < 良い

ありがとう

0 投票する
5 に答える
7107 参照

java - GridLayout を上から下、次に左から右に塗りつぶす方法は?

a のデフォルトの動作でGridLayoutは、コンポーネントは行ごとに、左から右に塗りつぶされます。コンポーネントが列で(左から右に)埋められるように使用できるのだろうか?ありがとう。

0 投票する
4 に答える
1517 参照

java - GridBagLayout の動作が正しくない

JFrame のサイズを変更すると、テーブル (より具体的には scrollPane) が小さな四角形になります (同じままですが、高さは 5 ~ 10 ピクセルに近くなります)。

また、JFrame には特定の高さのしきい値があることに気付きました。JFrame の高さがこれを下回ると、すべての GridBagLayouts が正しく動作します (たとえば、すべてのパネルの幅と高さが正しくなります)。高さがこのしきい値よりも高い場合、JFrame の高さを減らすと、両方の右側のパネルの幅が追加され、rightTopPanel は rightBottomPanel よりもはるかに速く高さが失われます。

しきい値は、rightTopPanel が最小の高さ (約 5 ~ 10 ピクセル) になるポイントのようです。

Helper.createGridBagConstraints は、GridBagConstraints を作成するための単なるヘルパー メソッドであり、多数の「オプション」パラメーターがあります。

編集:これは JScrollPane 内の問題のようです。追加しないと、残りのパネルのサイズが正しく変更されます。

編集2:これまでのところ、私の問題が何であるかを誰も理解していないため、スクリーンショットを次に示します: http://img155.imageshack.us/img155/8847/badgridbaglayout1.png

http://img17.imageshack.us/img17/8779/badgridbaglayout2.png

http://img28.imageshack.us/img28/9336/badgridbaglayout3.png

0 投票する
2 に答える
2040 参照

java - JButton のサイズを変更できません

JFrame にボタンを追加しようとしています。JButton を特定のサイズに割り当てることができません。

私が試してみました

何を試しても、ボタンは常にフルスクリーンで読み込まれます。

これは、いくつかのメソッド、make、build、および dostuff を使用している私のコードです。

私のメインはこんな感じです。

0 投票する
4 に答える
3463 参照

java - Swingでヌルレイアウトを使用することに嫌気がさしているのはなぜですか?

最近、自分が働いている会社のプログラムを作り始めました。背景情報と同じように、私はまだ学生であり、初心者のプログラマーなので、私の解決策はおそらく推奨されておらず、他の方法でそれを行う方法がわかりませんでしたが、それは機能し、それについて判断されることはありません。プログラミングとはまったく関係のない学生の仕事です。

プログラムの重要な点は、画面サイズと解像度(800x600以上)が異なる複数の異なるコンピューターで実行されることです。プログラムの一部を失うことなく画面のできるだけ多くを占めるようにするために、レイアウトをnullに設定し、相対値を使用してすべてをハードコーディングしました。

プログラムはキオスクスタイルで、最初に画面サイズの値を取得してそこから移動します(たとえば、頭のてっぺんから左側のメニューが画面の8分の1、上部のバーが2%になるなど)。 。また、フォントメトリックを使用して、コンポーネントのサイズが正しく、すべてが適切に表示されることを確認します。

私の質問は、レイアウトマネージャーを使用する代わりにレイアウトをnullにすることがなぜそんなに嫌われるのかということです。(これは恐ろしいやり方だといくつかのフォーラムで言われました)私はレイアウトマネージャーがどのように機能し、さまざまなレイアウトを使用する方法を知っていますが、このプログラムの要件(複数の異なる解像度、カスタムボタンの形状と配置) 、言語を変更するとコンポーネントのテキストが変更されるなど)、レイアウトマネージャーを使用してすべてを行うことはできませんでした。

このような状況で、経験豊富なプログラマーはどのようにレイアウトマネージャーを使用しますか?また、ボタンを特定の場所に配置し、他のコンポーネントを特定の場所に配置して、事前定義されたレイアウトのいずれにも実際には一致させない場合はどうしますか?

0 投票する
2 に答える
227 参照

java - Boxより効率的なレイアウト

Boxを使用して情報をリストする非常に古いコードがあります。私はそれを次のように作成します:

非常に(非常に)頻繁に、新しいアイテムが追加され、古いアイテムが削除されます。

以降

何かが追加または削除されるたびに、再描画する必要があるため、次のように呼び出します。

問題は、これが非常に頻繁に発生するため、UI が詰まるということです。より効率的にするには、より良い実装が必要だと思います。

バックグラウンドでアクティブなアイテムのリストを維持し、実際の UI を断続的に更新 (バッチ更新) できることはわかっていますが...

誰かがより効率的な代替アプローチを提案できますか?

0 投票する
2 に答える
175 参照

java - 互いに重なり合う2つのJTable

私の最初のGUIアプリの一部として、次のように2つのテーブルを表示したいと思います。

http://i.stack.imgur.com/6mq0m.jpg

2つのテーブルをそのように印刷することはできません!これまでの私のコードは次のとおりです。