2016-04-08 98 views
0

我試圖在JTextArea中添加滾動條滾動條,但沒有在textarea的顯示..的Java Swing JTextArea的滾動條不顯示內部

這裏是我的代碼,

import java.awt.Color; 
import java.awt.Dimension; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 

public class Test { 

    public static void main(String[] args) { 
     JFrame frame = new JFrame("MySql Console"); 
     frame.setSize(400, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel panel = new JPanel(); 
     frame.add(panel); 
     panel.setLayout(null); 

     JTextArea txtQuery = new JTextArea(); 
     txtQuery.setBounds(10, 10, 365, 45);   
     JScrollPane scroll = new JScrollPane (txtQuery, 
      JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
     //scroll.setPreferredSize(new Dimension(100, 50)); 
     panel.add(scroll); 
     panel.add(txtQuery); 

     frame.setVisible(true); 
    } 

} 

試圖從網上一些替代品,但還是行不通。

回答

0

它有助於添加一個視口到你的JTextArea?

東西沿着jScrollPane.setViewportView(jTextArea);? 如果這不起作用,您可能需要製作一個GroupLayout塊。所有考慮事項都不一定很難。我有這個:

javax.swing.GroupLayout layout = new 
javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() 
       .addContainerGap(118, Short.MAX_VALUE) 
       .addComponent(jScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(116, 116, 116)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() 
       .addContainerGap(105, Short.MAX_VALUE) 
       .addComponent(jScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(99, 99, 99)) 
     ); 

     pack(); 
    } 

希望這有助於!祝你好運:d

6
panel.setLayout(null); 

    JTextArea txtQuery = new JTextArea(); 
    txtQuery.setBounds(10, 10, 365, 45);   
    JScrollPane scroll = new JScrollPane (txtQuery, 
     JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
    //scroll.setPreferredSize(new Dimension(100, 50)); 
    panel.add(scroll); 
    panel.add(txtQuery); 
  1. 不要使用空佈局。佈局管理器將確定組件的首選大小,然後滾動窗格可以確定何時需要滾動條。向文本區域添加文本時,滾動條將自動出現。

  2. 不要將文本區域添加到面板。一個組件只能有一個父代。您已經將文本區域添加到滾動窗格。

  3. 通過指定文本區域的行/列,爲文本區域指定首選大小。

所以你修改的代碼應該是這樣的:

//panel.setLayout(null); 

    JTextArea txtQuery = new JTextArea (5, 20); 
    //txtQuery.setBounds(10, 10, 365, 45);   
    JScrollPane scroll = new JScrollPane (txtQuery); 
    //scroll.setPreferredSize(new Dimension(100, 50)); 
    panel.add(scroll); 
    //panel.add(txtQuery); 
1

請刪除它們下面的線,那麼一切都將正常工作。

panel.setLayout(null); 

以更有效地考慮@camickr答案中的點。