問題タブ [null-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.
java - パネルをヌルレイアウトマネージャーで動作させるためにあなたがしなければならないことは何ですか?
nullレイアウトマネージャーを機能させるのに問題があり、nullレイアウトマネージャーを使用するときに覚えておくべきことがあるこの素晴らしいページを見つけました。そのうちの1つは私の問題で、すぐに先に進みました。
nullレイアウトマネージャーを使用している別のパネルでも同様の問題が発生しています。しかし、このページはどこにも見つかりません!それで、何ですか?
この質問をする過程で、私は自分の問題を理解しました。この質問はどこにも見つからなかったので、私はまだこの知識をサイトに追加したいと思います。それは他の誰かに役立つかもしれません。
明確にするために、ドラッグとアニメーションの要件のため、このパネルにはnullレイアウトマネージャーを使用する必要があると既に判断しました。それは問題ではありません。
java - 新しいコンポーネントが null レイアウト マネージャーに表示されないのはなぜですか?
を使用し、を含む a とJFrame
呼ばれるパネルがあります。はを使用し、 のインスタンスをいくつか含んでいます。は、その内容を でレイアウトします。WatchPanel extends JPanel
GroupLayout
WatchListPanel extends JPanel
WatchListPanel
null
LayoutManager
WatchItemPanel extends JPanel
WatchItemPanel
GridBagLayout
フレームをロードして をインスタンス化するとき、データを含む3 つのインスタンスをWatchPanel
プリロードします。これらは正常に動作します。私の実装では、これらをドラッグ アンド ドロップ (したがってレイアウト) で並べ替えることができ、それも同様に機能します。には、新しいウォッチを追加するためのボタンがあります。これにより、ウォッチを追加できる独自の新しいパネルがポップアップします。この新しいパネルで [保存] ボタンを押すと、新しいウォッチが に追加されます。新しいウォッチを追加するために、 にトリクル ダウンしてを閉じます。WatchListPanel
WatchItemPanel
null
WatchPanel
JFrame
WatchPanel
WatchListPanel
JFrame
問題は、この新しいWatchItemPanel
ものが追加されたときにJFrame
、WatchPanel
. ドラッグアンドドロップで操作できます。その特定のパネルをドラッグすることもできますが、空白です。のサイズを変更するWatchPanel
と、表示され、正しくペイントされます。
ここで、setBounds
メソッドWatchListPanel
を呼び出しsetSize
てリスト内のrepaint
各WatchItemPanel
インスタンスでオーバーライドしましたが、新しいものを追加すると、既にsetBounds
呼び出しています。考えられるすべての場所に追加して電話をかけようとしましたが、何かを逃したのではないかと考えましたが、うまくいきませんでした。私は絶対に を に追加し、、、 を新しいパネルに呼び出しました。repaint
WatchItemPanel
repaint
invalidate
WatchItemPanel
WatchListPanel
setBounds
setVisible(true)
repaint
のaddWatch
およびupdatePositions
メソッドは次のWatchListPanel
とおりです。
そして、ここにsetBounds
メソッドがありますWatchListPanel
:
ここで別の情報 - 4 つのパネルすべてが塗装されています。を上書きpaintComponent
してWatchItemPanel
a を追加したところ、次のSystem.out.println
結果が得られました。
パネルにある余分な「無効な」列は何ですか? サイズを変更するとWatchPanel
、「無効」が消えます。ただし、余分な列のように見えます。他の行には、対応する無効でない値はありません。JPanel.toString()
(これは、パッケージ名が削除されたデフォルトの出力です。
java - 絶対レイアウトのフレームにボタン、ラベル...を含むJTabbedPaneを追加します
私はJavaのコードを持っています。
そして出力はそれです!
このコードをこのように変更したいと思います。
絶対レイアウト(null)を使用したい。これらのタブでメニュー、ボタン、ラベルを追加したい...
どのようにできるのか??
java - JPanel.setSize() が機能しない
JPanel のサイズを設定できない理由がわからない友人は、このコードをチェックしてください... .
java - 絶対配置が必要な場合の null レイアウト マネージャーの代替ソリューション
数か月前、Swing内でサイズ変更可能なコンポーネントを実装する方法を理解するために、この Swing チュートリアルhttp://zetcode.com/tutorials/javaswingtutorial/resizablecomponent/を読みました。
このチュートリアルでは、null LayoutManager を使用して、子コンポーネントを絶対配置できるようにする方法について説明しています。
別の主題に関する議論で、@Andrew Thompson は、null レイアウトを使用することは悪い考えであると指摘しました。この記事http://download.oracle.com/javase/tutorial/uiswing/layout/none.htmlでは、ヌル レイアウト マネージャーも望ましくないと説明していますが、特定の状況では が役立つ可能性があると述べています。
次のような状況で:
- JPanel の子コンポーネントの絶対配置が必要です
- 子コンポーネントに独自の境界ボックス条件を実装する必要があります (重複する可能性のある状況を確立するため)
- JPanel の子コンポーネントをサイズ変更可能にする必要があります
説明されている状況で、null レイアウト マネージャーを使用するのは正しいですか?
または、JPanel コンテナー コンポーネントのレイアウト マネージャーを使用してその目標を達成するための他のより良いソリューションはありますか?
前もって感謝します
java - null LayoutManager を使用すると、JTextArea を持つ JScrollPane が表示されないのはなぜですか?
JScrollPane 内に JTextArea を表示しようとしていますが、(簡略化された) プログラムを実行すると空のフレームが表示されます。
null LayoutManager を使用して、教えている教科書との一貫性を保ちます。
java - nullレイアウトでJPanelにJTableを追加するには?
レイアウトがに追加JTable
したい。 他の成分が含まれています。適切な位置に追加する必要があります。JPanel
null
JPanel
JTable
java - Swingでヌルレイアウトを使用することに嫌気がさしているのはなぜですか?
最近、自分が働いている会社のプログラムを作り始めました。背景情報と同じように、私はまだ学生であり、初心者のプログラマーなので、私の解決策はおそらく推奨されておらず、他の方法でそれを行う方法がわかりませんでしたが、それは機能し、それについて判断されることはありません。プログラミングとはまったく関係のない学生の仕事です。
プログラムの重要な点は、画面サイズと解像度(800x600以上)が異なる複数の異なるコンピューターで実行されることです。プログラムの一部を失うことなく画面のできるだけ多くを占めるようにするために、レイアウトをnullに設定し、相対値を使用してすべてをハードコーディングしました。
プログラムはキオスクスタイルで、最初に画面サイズの値を取得してそこから移動します(たとえば、頭のてっぺんから左側のメニューが画面の8分の1、上部のバーが2%になるなど)。 。また、フォントメトリックを使用して、コンポーネントのサイズが正しく、すべてが適切に表示されることを確認します。
私の質問は、レイアウトマネージャーを使用する代わりにレイアウトをnullにすることがなぜそんなに嫌われるのかということです。(これは恐ろしいやり方だといくつかのフォーラムで言われました)私はレイアウトマネージャーがどのように機能し、さまざまなレイアウトを使用する方法を知っていますが、このプログラムの要件(複数の異なる解像度、カスタムボタンの形状と配置) 、言語を変更するとコンポーネントのテキストが変更されるなど)、レイアウトマネージャーを使用してすべてを行うことはできませんでした。
このような状況で、経験豊富なプログラマーはどのようにレイアウトマネージャーを使用しますか?また、ボタンを特定の場所に配置し、他のコンポーネントを特定の場所に配置して、事前定義されたレイアウトのいずれにも実際には一致させない場合はどうしますか?
java - JLabelの画像をクリックしたときのマウスのXとYの位置を取得する
ImageIcon 機能を使用して JLabel 内に画像を表示しています。
JLabel は JPanel 内に含まれています。
画像がクリックされたときに、画像に対するマウスの位置を取得したい。
画像を含む JLabel にマウスリスナーを追加することで、この問題を解決しようとしています。
どうやら画像の幅と高さでJLabelのサイズを設定しても、自動的にJLabelがJPanelのサイズに引き伸ばされるようです。
したがって、以下のコードを実行すると、画像のサイズが JPanel よりも小さい場合、X および Y 位置を取得すると、不要な値が返されます。
マウスの X 位置と Y 位置を取得できるように、JLabel のサイズを具体的に制限する方法はありますか?
または、画像に対するマウスの位置を取得するより良い方法はありますか? (どちらが良いでしょう)
java - サイズ変更可能なコンポーネントに適した LayoutManager
少し前に、Swing でマウスのサイズ変更可能なコンポーネントを実装する方法を示すこの記事を読みました。
作成者は、コンポーネントの絶対配置を可能にするために、null LayoutManager を使用します。null レイアウトを使用してはならないことはわかっているので、私の質問は次のとおりです。
コンポーネントの絶対配置を許可する LayoutManager が既に実装されていますか、それとも独自に実装する必要がありますか?