2011-09-14 16 views
2

NetBeansを使用して作成したJavaアプリケーションがあります(はい、NetBeansについて多くの苦情がありました)。ウィンドウのサイズを変更すると、特定のサイズよりも小さいウィンドウ(実際には高さ)を縮小するまで、ウィンドウのサイズが変更されます。ウィンドウのサイズは変更されますが、内容はちょうどクリップされます。Javaウィンドウのコンテンツのサイズは変更されていますが、最小サイズを超えていません

すべてのコンポーネントウィジェットをチェックしました。それらはすべて、ゼロまたは非常に小さい数の最小サイズを有する。非ゼロの好ましいサイズの唯一のものは、親とサイズを変更しないサイズのもので、サイズも小さくなります。縮小すると、私はウィジェットのいずれにも当たらない。私がもう収縮できないところでは、パネルの底面と底面の内側のウィジェットとの間にかなりの隙間があります。

このようにサイズを制限していることがわかる方法はありますか?関係する可能性がある他の物件がありますか?

ありがとうございました。

+1

あなたが説明している問題を示す[sscce](http://sscce.org/)を提供してください。 – trashgod

+1

*「NetBeansについてたくさんの苦情を受けました」*何らかのプラグインを使用している人には問題ありません。しかし、私はコードの漠然とした記述に反対するか、またはGUIビルダーが一般的に膨らませている肥大したものを見なければならない。さらに、「私のIDEをどうやって作るのですか?」という質問がある場合、私はその質問から外れています。 IDEのサポートを提供するよりも良いことを得ました。 IDEがあることを*言及する必要のある質問者でさえ、彼らは何をしているのか分からないという疑いがある。 –

+0

それはすべてLayoutManagerにありますが、サイズは自由ですが、それらは設計されています。あなたが望むように動作するマネージャーを選択してください。 – kleopatra

答えて

1

はい、非常に簡単な解決策は一例

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class CustomComponent extends JFrame { 

    private static final long serialVersionUID = 1L; 

    public CustomComponent() { 
     setTitle("Custom Component Test"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    public void display() { 
     add(new CustomComponents(), BorderLayout.NORTH); 
     add(new CustomComponents(), BorderLayout.CENTER); 
     add(new CustomComponents(), BorderLayout.SOUTH); 
     add(new CustomComponents(), BorderLayout.EAST); 
     pack(); 
     // enforces the minimum size of both frame and component 
     setMinimumSize(getMinimumSize()); 
     setPreferredSize(getPreferredSize()); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     CustomComponent main = new CustomComponent(); 
     main.display(); 
    } 
} 

class CustomComponents extends JLabel { 

    private static final long serialVersionUID = 1L; 

    @Override 
    public Dimension getMinimumSize() { 
     return new Dimension(200, 100); 
    } 

    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(300, 200); 
    } 

    @Override 
    public void paintComponent(Graphics g) { 
     int margin = 10; 
     Dimension dim = getSize(); 
     super.paintComponent(g); 
     g.setColor(Color.red); 
     g.fillRect(margin, margin, dim.width - margin * 2, dim.height - margin * 2); 
    } 
} 
+0

これはどのように役立ちますか?ダイアログを構築するためにNetBeansが生成する生のソースを調べると、少数のアイテムしか最小サイズに設定されておらず、小さい(85x16)ものです。また、getMinimumSize()をオーバーライドするために、すべてのパネルをサブクラス化すべきだと言っていますか? setMinimumSizeが機能しない場合は、これが必要なのです。それは壊れていますか?ありがとう。 –

+0

私はNetBeansユーザーであるため、組み込みのJava Desktop Aplicationを使用したことはありません。コード生成やカスタムメソッドの入力が必要であることを確認してください。ただし、許可されているかサポートされているかどうかは疑問です。 1時間に1回のGUIを作成しますが、私の利点はJComponentsの完全なコントロールです。ここではすべてhttp://download.oracle.com/javase/tutorial/uiswing/components/index.htmlですが、手書きのコーディングが必要です:-) – mKorbel

+0

+カスタムコンポーネントのサイズをオーバーライドする方法については、図1を参照してください。私は 'setMinimumSize()'と 'setPreferredSize()'を 'display()'で呼び出す理由を理解していません。 – trashgod

0

ためgetMinimumSize()

をオーバーライドして返す、我々はいくつかのサンプルコードを見ることができますか?私はそれがウィンドウではなくウィンドウ内のコンテンツが特定のポイントを超えてサイズ変更されていないと信じています。

+0

ひどく推測しますか? – kleopatra

関連する問題