2014-06-06 37 views
0

我在摆弄Swing,发现某些元素没有出现在我的应用程序中。最值得注意的是JScrollPane,出于某种原因,我的JTextArea和JButton之间似乎有一个网格列。GridLayout和JScrollPane的额外列未显示 - Java Swing

见下图: enter image description here

我的方法如下:

private void panels(){ 
     JFrame frame=new JFrame("Viewing All Program Details"); 
     JPanel panel = new JPanel(new GridLayout(1,1)); 
     panel.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     JPanel rightPanel = new JPanel(new GridLayout(15,0,10,10)); 
     rightPanel.setBorder(new EmptyBorder(15, 5, 5, 10)); 
     JTextArea textArea = new JTextArea(storeAllString,0,70); 
     JScrollPane scrollBarForTextArea=new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
     panel.add(textArea); 
     frame.add(scrollBarForTextArea); 
     frame.getContentPane().add(panel,BorderLayout.LINE_START); 
     frame.getContentPane().add(rightPanel,BorderLayout.EAST); 
     frame.setSize(1000, 700); 
     frame.setVisible(true); 
     rightPanel.add(saveCloseBtn); 
     rightPanel.add(closeButton); 
} 

回答

2

让我们先从明显...

JTextArea textArea = new JTextArea(storeAllString,0,70); 
JScrollPane scrollBarForTextArea=new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
panel.add(textArea); 

这不是你如何使用一个JScrollPane,基本上你所做的是通过将JScrollPane添加到中从JScrollPane中删除。组件一次只能驻留在单个父容器中。

相反,你应该添加滚动窗格的panel ...

JTextArea textArea = new JTextArea(storeAllString,0,70); 
JScrollPane scrollBarForTextArea=new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
panel.add(scrollBarForTextArea); 

“额外” 列实际上是将以往问题的sympton ...

panel.add(textArea); 
frame.add(scrollBarForTextArea); // This is the "extra" column 
frame.getContentPane().add(panel,BorderLayout.LINE_START); 
frame.getContentPane().add(rightPanel,BorderLayout.EAST); 

的空的JScrollPane就是你所看到的。与之前的修复程序,你只需要做......

frame.add(panel); 
frame.getContentPane().add(rightPanel,BorderLayout.EAST); 

你应该,也叫setVisible您完成构建UI如果可能的话

+0

那做了之后。谢了哥们。 – Splunk