Java GUI填充空白

时间:2019-12-07 17:28:01

标签: java swing user-interface

Java GUI我的项目具有以下Java GUI。由于某些原因,中间和右侧面板被放置在下面,并留有空白-用红色标记。有没有一种方法可以拉动面板以填充空间。

这些空白处看起来不太好。我试图检查所有代码,但无法指出要纠正的地方。

谢谢。

     public static JPanel main= new JPanel(), 
     left= new JPanel(),middle= new JPanel(),right = new JPanel();

     Container c = getContentPane();     
     c.setLayout(new FlowLayout()) ; 

     JPanel pane = new JPanel();     
     pane.setLayout(new BorderLayout());     
     pane.add(new JLabel("Enter word/SQL: "), "North");      
     pane.add(tf, "Center");   //enter keyword       

     JPanel second = new JPanel();       
     second.setLayout(new GridLayout(8, 1));                     
     second.add(messageIDText);          

     //This is the start of adding panels        
     //create a left side panal and add the sub panels to it    
     JPanel left = new JPanel();     
     JPanel middle = new JPanel();       
     JPanel center = new JPanel();   
     JTextArea output = new JTextArea("", 60, 60);   
     JPanel sixth = new JPanel(); 
     JPanel seventh = new JPanel();
     JPanel eigth = new JPanel(new GridLayout(8,1));     
     JPanel labels7 = new JPanel(new GridLayout(5,1));       
     JPanel controls7 = new JPanel(new GridLayout(5,1));         
     JPanel tenth = new JPanel();
     sixth.setLayout(new BorderLayout(5,5));

     JPanel fourth = new JPanel();
     fourth.add(firstButton);        
     sixth.add(labels, BorderLayout.WEST);       
     sixth.add(controls, BorderLayout.CENTER);        
     sixth.add(controlsButtons, BorderLayout.EAST);
     labels.add(new JLabel("Proposal:"));         
     controls.add(proposalNumberText);                
     controlsButtons.add(freeQueryButton);

     //add border
     pane.setBorder(BorderFactory.createCompoundBorder(new 
     EmptyBorder(10,10,10,10), BorderFactory.createEtchedBorder()));      
     fourth.setBorder(BorderFactory.createCompoundBorder(new 
     EmptyBorder(10,10,10,10), BorderFactory.createEtchedBorder()));

     //-------LEFT SIDE -- PARAMETERS
     left.setLayout(new BoxLayout(left, BoxLayout.PAGE_AXIS));
     JLabel headerLabel,blank;   
     headerLabel = new JLabel("Navigate Records", JLabel.LEFT);  
     Font f = headerLabel.getFont();
     headerLabel.setFont(f.deriveFont(f.getStyle() ^ Font.BOLD)); // bold
     left.add(headerLabel, BorderLayout.PAGE_END);       
     left.add(fourth, BorderLayout.PAGE_END);

     main.add(left);

     //---------MIDDLE PART - Messages - tabbed pane
    JTabbedPane jtp = new JTabbedPane();        
    getContentPane().add(jtp);
    //jtp.setSize(jtp.getPreferredSize());
    JPanel jpA = new JPanel(),jpB = new JPanel(),
    jpC = new JPanel(),jpD = new JPanel();
    JScrollPane scrollPane2 = new JScrollPane(),jp = new 
    JScrollPane(activeTSText), jp2 = new JScrollPane(analyseWordsText),
    jp3 = new JScrollPane(markedMessageText); 
    JLabel labelA = new JLabel();       
    labelA.setText("");     
    jpA.add(labelA);        
    jpA.add(jp);        

    jtp.addTab("Message", jpA);                 
    middle.add(jtp);
    main.add(middle);       

    //----------RIGHT PART -  ..        //paramters and results     
    JPanel  jj = new JPanel();  
    jj.setLayout(new BoxLayout(jj, BoxLayout.PAGE_AXIS));
    stateJTable.setRowHeight(20);   //add JTable
    JScrollPane js3 =new JScrollPane(stateJTable);       
    js3.setVisible(true);       

    //JTabbedPane jtp2 = new JTabbedPane();         
    //JPanel StateSubstatesTabOnLeft = new JPanel(), 
    StateSubstates_PostProcessedTabOnLeft = new JPanel();       
    JPanel firstleftTabinRightSideOfFrame = new JPanel(), 
    secondLeftTabinRightSideOfFrame = new 
    JPanel(),rightTabInRightSideOfFrame = new JPanel(); 

    jj.add(js3);    
    //downbelow, the state jtable is added to the panel here through the 
    //scrollpane which contains the jtable

    right.add(jj) ; //stateJTable);// add table in panel using add() method
    main.add(right); 
    proposalNumberText.requestFocusInWindow();  

1 个答案:

答案 0 :(得分:0)

我已经通过使用Borderlayout并将其分配给主面板解决了该问题。 向其分配WEST,CENTER和EAST区域。

我已经在上面添加了主面板的位置的代码中添加了下面的代码。

感谢您提供使用MRE方法开始调试的建议。

BorderLayout layout = new BorderLayout();
main.setLayout(layout); 
main.add(left,BorderLayout.WEST);
main.add(middle,BorderLayout.CENTER);
main.add(right,BorderLayout.EAST);