2016-12-12 7 views
3

(もAWT)、LayoutManager Sは、これらの線を描画する方法を、...エッジや線を描画することなく、いくつかの教育目標のためSwingでレイアウトとそのエッジのセルを描画する方法は? Swingで

ContainerComponent Sの大きさと位置を決める?(例えばpaintComponents()をオーバーライドContainerクラスなど)

ソリューションは、各レイアウトのルールに従ってすべてを計算して座標を取得していますが、レイアウト自体を使用してこれを行う方法はありますか?

+0

私は要件や質問を理解していません。ただし、コンポーネントをコンテナに追加する前に、各コンポーネントをボーダ内のコンテナに追加することもできます。そして、「縁取られた」とは、非透明色の 'LineBorder'のような目に見える境界を意味します。最初にコンテナに追加する理由は、ユーザーの操作(入力フォーカスを持つコンポーネントなど)に応じて変更される可能性のある一部のコンポーネント(たとえばボタン)が既に境界線を持っているためです。 –

+1

代替戦略(不透明なコンポーネントのみに適しています)は、親コンテナに異なる色を与え、レイアウトはコンポーネントの異なる領域間のパディングを行うことです。私はこれがいくつかのレイアウトでは実用的だが、他のレイアウトでは実用的ではないと思う –

+0

@AndrewThompson tnxあなたの編集とあなたのコメント。 –

答えて

2

すべてのコンポーネントに境界線を付ける場合は、ループを使用できます。それは以前からだ、

Container cont = frame.getContentPane(); 

Component[] components = cont.getComponents(); 
List<JComponent> list = new ArrayList<>(); 
for (Component comp : components) { 
    if (comp instanceof JComponent) { 
     list.add((JComponent) comp); 
    } 
} 
for (JComponent jComponent : list) { 
    jComponent.setBorder(BorderFactory.createLineBorder(Color.black,2)); 
} 

これは、あなたが(取得メニューバーを無視するものである:以下の方法は、すべてのスイングコンポーネントに対してJFrameのコンテンツペインにある(実際にJComponent複数可)の境界線を描画します質問):

output

関連する問題