2016-04-08 68 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答案中的点。