java - Swing Layout issue - JTable and JTree -


i having trouble in using layout in swing properly.

i trying achieve screenshot1 getting screenshot2.

please see source code below.

what dong wrong? how can achieve want (as in screenshot1).

note: when run code multiple times, alignment between table tree getting correct. looks race condition here.

screenshot1

screenshot1

screenshot2
screenshot2

source code:

import javax.swing.*; import javax.swing.tree.defaultmutabletreenode; import java.awt.*; import java.util.date;  public class swinglayouttest {     private static final int screenwidth;     private static final int screenheight;      static {         dimension screensize = toolkit.getdefaulttoolkit().getscreensize();         screenwidth = screensize.width;         screenheight = screensize.height;     }      public static void main(string[] args) throws exception {         jframe mainwindow = new jframe();         mainwindow.setdefaultcloseoperation(jframe.exit_on_close);         mainwindow.setsize(800, 600);         mainwindow.setextendedstate(jframe.maximized_both);         container contentpane = mainwindow.getcontentpane();         contentpane.setlayout(new boxlayout(contentpane, boxlayout.x_axis));         jtree tree = createtree();         tree.setpreferredsize(new dimension(screenwidth/2, screenheight));         jscrollpane scrolltree = new jscrollpane(tree);         jtable table = createtable();         table.setpreferredsize(new dimension(screenwidth/2, screenheight));         table.getcolumnmodel().getcolumn(1).setwidth(100);         table.getcolumnmodel().getcolumn(2).setwidth(100);         jscrollpane scrolltable = new jscrollpane(table);         jsplitpane splitpane = new jsplitpane(jsplitpane.horizontal_split, scrolltree, scrolltable);         contentpane.add(splitpane);         mainwindow.setvisible(true);      }      private static jtree createtree(){         defaultmutabletreenode rootnode = new defaultmutabletreenode("this root node");         defaultmutabletreenode child1 = new defaultmutabletreenode("child 1");         rootnode.add(child1);         child1.add(new defaultmutabletreenode("child 1 1"));         child1.add(new defaultmutabletreenode("child 1 2"));         defaultmutabletreenode child2 = new defaultmutabletreenode("child 2");         rootnode.add(child2);         child2.add(new defaultmutabletreenode("child 2 1"));         child2.add(new defaultmutabletreenode("child 2 2"));         return new jtree(rootnode);     }      private static jtable createtable(){         string[] columnnames = {"name", "size", "modified time"};         object[][] data = {{"this row 1","1000", new date()},                 {"this row 2", "5455", new date()}};         return new jtable(data, columnnames);     } } 

from swing tutorial:

to make split pane work well, need set minimum sizes of components in split pane, preferred size of either split pane or contained components. choosing sizes should set art requires understanding how split pane's preferred size , divider location determined.

why setting size of window small, setting size of components size of screen? if want visible, why not set size of window size of screen?

try calling setdividerlocation and/or setresizeweight , messing minimum sizes of table/tree components. there no single correct answer here.


Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -