2016-12-05 9 views
0

質問が重複する可能性として同定されている:JTable内部にJScrollpaneが自動サイズ変更されません。回避する?

JPanel Window not scaling when resize the main frame

そのトピックに問題がJPanelのサイズを変更しないということですので、私は、同意しません。私の場合、JPanelに問題はありませんが、JScrollPaneのサイズが変更されていません!

私はJFrameを持っています。があり、JScrollpaneを含み、JTableを含んでいます。

問題がJFrameのサイズが変更された場合、JScrollpaneはスクロールペインもウィンドウ内に収まるか、本当に大きなないようにJFrameは、本当に小さくするとは関係ありません、同じままということ、です。

JScrollpaneは、ウィンドウのサイズ変更によって調整されるJPanelに従って調整します。 JScrollPaneの中でJTextAreaを使用して同じことを行うと、すべてうまく動作します。JPanelはスクロールペインのサイズを変更します。

JTableJScrollPaneの自動サイズ変更を破棄して回避する理由を知っていますか? LayoutManagerは何とか正しく処理できません...(何が起こっているかを示す画像を追加しようとしましたが、まだ十分な評判がありません...)

ここにコードがあります:そのトピックに問題がJPanelのサイズを変更しないということですので、

JFrame tableFrame = new JFrame("Test Table"); 
editPanel vadEditPane; 
vadEditPane = new editPanel(vadData); 
vadEditPane.setOpaque(true); //content panes must be opaque 
tableFrame.getContentPane().add(vadEditPane, BorderLayout.CENTER); 

public class editPanel extends JPanel { 
    public editPanel(dataConv vadData){ 
     JTable vadTable; 
     String[] columnNames = {---SOME COLUMN NAMES---}; 
     Object[][] data = {---SOME DATA---}; 
     vadTable = new JTable(data, columnNames); 
     vadTable.setPreferredScrollableViewportSize(new Dimension(500, 70)); 
     vadTable.setFillsViewportHeight(true); 
     vadTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
     JScrollPane scrollPane = new JScrollPane(vadTable); 
     scrollPane.setBackground(Color.RED); 
    scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
     add(scrollPane); 
     setBackground(Color.ORANGE); 
     } 
    } 
+1

JFrameのような 'BorderLayout'ではなく、' JPanel'のデフォルトレイアウトをチェックしてください。 – AxelH

+1

メインフレームのサイズを変更したときに[JPanelウィンドウの拡大/縮小ができません](http://stackoverflow.com/questions/33433485/jpanel-window-not-scaling-when-resize-the-main-frame) – AxelH

答えて

0

私は、同意しません。私の場合、JPanelに問題はありませんが、JScrollPaneのサイズが変更されていません!

最初の回答のコメントを読んで、その提案を理解する時間があれば、解決策は同じであることがわかります。

JPanelには、FlowLayout(デフォルト)が使用されています。 FlowLayoutは、追加されたコンポーネントのpreferred sizeを尊重します。したがって、フレームサイズが変わってもテーブルのサイズは決して変化しません。

解決策は、パネルのレイアウトマネージャを変更して、パネルのサイズが変更されたときに子コンポーネントのサイズを変更できるようにすることです。私はBorderLayoutを使用することをお勧めします。

+0

ありがとう!申し訳ありませんが、JAVAでの経験の欠如は私に初めて提案を理解させませんでした。 "setLayout(new BorderLayout())"は問題を解決しました! – Vytautas

関連する問題