如何将滚动条添加到文本区域。我试过这个代码,但它不起作用。
middlePanel=new JPanel();
middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area"));
// create the middle panel components
display = new JTextArea(16, 58);
display.setEditable(false); // set textArea non-editable
scroll = new JScrollPane(display);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
//Add Textarea in to middle panel
middlePanel.add(scroll);
middlePanel.add(display);
由于
答案 0 :(得分:49)
在这里将JTextArea添加到JScrollPane中后:
scroll = new JScrollPane(display);
您不需要像以下那样将其再次添加到其他容器中:
middlePanel.add(display);
只需删除最后一行代码,它就能正常工作。像这样:
middlePanel=new JPanel();
middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area"));
// create the middle panel components
display = new JTextArea(16, 58);
display.setEditable(false); // set textArea non-editable
scroll = new JScrollPane(display);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
//Add Textarea in to middle panel
middlePanel.add(scroll);
JScrollPane只是另一个容器,它在需要时将滚动条放在组件周围,并且还有自己的布局。当你想把任何东西包装成一个滚动时你需要做的就是把它传递给JScrollPane构造函数:
new JScrollPane( myComponent )
或设置如下视图:
JScrollPane pane = new JScrollPane ();
pane.getViewport ().setView ( myComponent );
其他强>
以下是完整的工作示例,因为您仍然无法正常工作:
public static void main ( String[] args )
{
JPanel middlePanel = new JPanel ();
middlePanel.setBorder ( new TitledBorder ( new EtchedBorder (), "Display Area" ) );
// create the middle panel components
JTextArea display = new JTextArea ( 16, 58 );
display.setEditable ( false ); // set textArea non-editable
JScrollPane scroll = new JScrollPane ( display );
scroll.setVerticalScrollBarPolicy ( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS );
//Add Textarea in to middle panel
middlePanel.add ( scroll );
// My code
JFrame frame = new JFrame ();
frame.add ( middlePanel );
frame.pack ();
frame.setLocationRelativeTo ( null );
frame.setVisible ( true );
}
以下是你得到的:
答案 1 :(得分:5)
我天真的假设是滚动窗格的大小将自动确定......
实际上对我有用的唯一解决方案是 明确地发布JScrollPane的边界 :
import javax.swing.*;
public class MyFrame extends JFrame {
public MyFrame()
{
setBounds(100, 100, 491, 310);
getContentPane().setLayout(null);
JTextArea textField = new JTextArea();
textField.setEditable(false);
String str = "";
for (int i = 0; i < 50; ++i)
str += "Some text\n";
textField.setText(str);
JScrollPane scroll = new JScrollPane(textField);
scroll.setBounds(10, 11, 455, 249); // <-- THIS
getContentPane().add(scroll);
setLocationRelativeTo ( null );
}
}
也许它会帮助一些未来的访客:)
答案 2 :(得分:2)
答案 3 :(得分:0)
使用Java swing实现滚动条的最简单方法如下: