Java 无法使JTextArea可滚动。。!
这是我的密码:Java 无法使JTextArea可滚动。。!,java,swing,jscrollpane,jtextarea,Java,Swing,Jscrollpane,Jtextarea,这是我的密码: final JTextArea textArea = new JTextArea(); textArea.setFont(new Font("MS UI Gothic", Font.PLAIN, 13)); textArea.setLineWrap(true); textArea.setBounds(77, 310, 474, 136); //contentPane.add(textArea); (edited...still the same problem persists.
final JTextArea textArea = new JTextArea();
textArea.setFont(new Font("MS UI Gothic", Font.PLAIN, 13));
textArea.setLineWrap(true);
textArea.setBounds(77, 310, 474, 136);
//contentPane.add(textArea); (edited...still the same problem persists..)
JScrollPane sbrText = new JScrollPane(textArea);
sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
contentPane.add(sbrText);
当我尝试此操作时,文本区域不可见(我使用Eclipse的Window Builder插件,布局为“绝对布局”)。我认为您不需要执行
contentPane.add(文本区域)代码>。是这条线引起了问题。注释掉这个,您的代码应该可以正常工作
看看答案,它可能会帮助你
以下代码在我的位置运行良好:
final JTextArea textArea = new JTextArea();
textArea.setFont(new Font("MS UI Gothic", Font.PLAIN, 13));
textArea.setLineWrap(true);
textArea.setBounds(77, 310, 474, 136);
JScrollPane sbrText = new JScrollPane(textArea);
sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(sbrText);//contentPane.add(sbrText);
frame.setVisible(true);
如果您的代码运行不正常,那么您肯定有一些其他错误,可能与contentpane有关。
我认为您不需要执行contentpane.add(textArea)代码>。是这条线引起了问题。注释掉这个,您的代码应该可以正常工作
看看答案,它可能会帮助你
以下代码在我的位置运行良好:
final JTextArea textArea = new JTextArea();
textArea.setFont(new Font("MS UI Gothic", Font.PLAIN, 13));
textArea.setLineWrap(true);
textArea.setBounds(77, 310, 474, 136);
JScrollPane sbrText = new JScrollPane(textArea);
sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(sbrText);//contentPane.add(sbrText);
frame.setVisible(true);
如果您的代码运行不正常,那么您肯定有一些其他错误,可能与您的内容窗格有关。
好的……我终于让它工作了……我在滚动窗格中指定了相同的设置边界,而不是文本区域。。这是代码^_^
final JTextArea textArea = new JTextArea();
textArea.setFont(new Font("MS UI Gothic", Font.PLAIN, 13));
textArea.setLineWrap(true);
//textArea.setBounds(77, 310, 474, 136);
JScrollPane scroll = new JScrollPane (textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setBounds(77, 310, 474, 136);
contentPane.add(scroll);
以下是截图:
以前的:
现在:好的……我终于让它工作了……我在滚动窗格中指定了相同的设置边界,而不是文本区域。。这是代码^_^
final JTextArea textArea = new JTextArea();
textArea.setFont(new Font("MS UI Gothic", Font.PLAIN, 13));
textArea.setLineWrap(true);
//textArea.setBounds(77, 310, 474, 136);
JScrollPane scroll = new JScrollPane (textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setBounds(77, 310, 474, 136);
contentPane.add(scroll);
以下是截图:
以前的:
现在:在这里,我已经使用嵌套布局做了相同的事情,看看代码示例:
import java.awt.*;
import javax.swing.*;
public class WelcomeExample
{
private JPanel headerPanel;
private JButton logoutButton;
private JPanel leavePanel;
private JRadioButton casualRButton;
private JRadioButton specialRButton;
private JRadioButton sickRButton;
private JRadioButton privilegeRButton;
private ButtonGroup radioButtonGroup;
private JTextField leaveDaysField;
private JButton checkLeaveButton;
private JTextArea notesArea;
private JScrollPane notesScroller;
private JButton applyLeaveButton;
private String headerText = "<html><body><h1><font " +
"color=\"red\">Welcome : </font><font color" +
"=\"blue\">Code Zero</font></h1></body></html>";
private void displayGUI()
{
JFrame frame = new JFrame("Welcome");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(5, 5));
contentPane.setBorder(
BorderFactory.createEmptyBorder(5, 5, 5, 5));
headerPanel = getHeaderPanel();
leavePanel = getLeavePanel();
contentPane.add(headerPanel, BorderLayout.PAGE_START);
contentPane.add(leavePanel, BorderLayout.CENTER);
contentPane.add(getApplyPanel(), BorderLayout.PAGE_END);
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private JPanel getHeaderPanel()
{
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout(5, 5));
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
JLabel headerLabel = new JLabel(headerText, JLabel.CENTER);
JPanel buttonPanel = new JPanel();
logoutButton = new JButton("Logout");
buttonPanel.add(logoutButton);
panel.add(headerLabel, BorderLayout.CENTER);
panel.add(buttonPanel, BorderLayout.LINE_END);
panel.add(new JSeparator(
SwingConstants.HORIZONTAL), BorderLayout.PAGE_END);
return panel;
}
private JPanel getLeavePanel()
{
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout(5, 5));
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
JPanel leaveHeaderPanel = new JPanel();
leaveHeaderPanel.setLayout(new GridLayout(0, 1, 5, 5));
leaveHeaderPanel.setBorder(
BorderFactory.createTitledBorder("Choose a leave type : "));
JPanel leaveTypePanel = new JPanel();
leaveTypePanel.setLayout(new FlowLayout(
FlowLayout.LEFT, 5, 5));
casualRButton = new JRadioButton("Casual Leave");
specialRButton = new JRadioButton("Special Leave");
sickRButton = new JRadioButton("Sick Leave");
privilegeRButton = new JRadioButton("Privilege Leave");
radioButtonGroup = new ButtonGroup();
radioButtonGroup.add(casualRButton);
radioButtonGroup.add(specialRButton);
radioButtonGroup.add(sickRButton);
radioButtonGroup.add(privilegeRButton);
leaveTypePanel.add(casualRButton);
leaveTypePanel.add(specialRButton);
leaveTypePanel.add(sickRButton);
leaveTypePanel.add(privilegeRButton);
JPanel applyLeavePanel = new JPanel();
applyLeavePanel.setLayout(new FlowLayout(
FlowLayout.LEFT, 5, 5));
JLabel applyLeaveLabel = new JLabel(
"Apply for (No. of days) : ", JLabel.CENTER);
leaveDaysField = new JTextField(5);
checkLeaveButton = new JButton("Check Leave Availability");
applyLeavePanel.add(applyLeaveLabel);
applyLeavePanel.add(leaveDaysField);
applyLeavePanel.add(checkLeaveButton);
leaveHeaderPanel.add(leaveTypePanel);
leaveHeaderPanel.add(applyLeavePanel);
notesArea = new JTextArea(10, 10);
notesScroller = new JScrollPane();
notesScroller.setBorder(
BorderFactory.createTitledBorder(
"Leave Note (Max. 200 Characters) : "));
notesScroller.setViewportView(notesArea);
panel.add(leaveHeaderPanel, BorderLayout.PAGE_START);
panel.add(notesScroller, BorderLayout.CENTER);
return panel;
}
private JPanel getApplyPanel()
{
JPanel panel = new JPanel();
applyLeaveButton = new JButton("Apply");
panel.add(applyLeaveButton);
return panel;
}
public static void main(String[] args)
{
Runnable runnable = new Runnable()
{
@Override
public void run()
{
new WelcomeExample().displayGUI();
}
};
EventQueue.invokeLater(runnable);
}
}
import java.awt.*;
导入javax.swing.*;
公共类Welcome示例
{
私人JPanel headerPanel;
私人JButton logoutButton;
私人JPanel小组;
私家便装;
专用JRadioButton专用按钮;
私人JRadioButton sickRButton;
私人JRadioButton私人按钮;
专用按钮组radioButtonGroup;
私人JTextField leaveDaysField;
私有JButton checkLeaveButton;
私人JTextArea票据;
私人JScrollPane记事本;
私有JButton applyLeaveButton;
私有字符串headerText=“欢迎:代码为零”;
私有void displayGUI()
{
JFrame=新JFrame(“欢迎”);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPane=新的JPanel();
setLayout(新的BorderLayout(5,5));
contentPane.setOrder(
createEmptyByOrder(5,5,5,5));
headerPanel=getHeaderPanel();
leavePanel=getLeavePanel();
contentPane.add(headerPanel,BorderLayout.PAGE_START);
添加(leavePanel,BorderLayout.CENTER);
添加(getApplyPanel(),BorderLayout.PAGE_END);
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(真);
frame.setVisible(true);
}
私人JPanel getHeaderPanel()
{
JPanel面板=新的JPanel();
面板设置布局(新边框布局(5,5));
panel.setBorder(BorderFactory.createEmptyByOrder(5,5,5,5));
JLabel headerLabel=新的JLabel(headerText,JLabel.CENTER);
JPanel buttonPanel=新的JPanel();
logoutButton=新的JButton(“注销”);
按钮面板。添加(注销按钮);
panel.add(headerLabel,BorderLayout.CENTER);
面板。添加(按钮面板,边框布局。线条结束);
panel.add(新的JSepator(
SwingConstants.HORIZONTAL),BorderLayout.PAGE_END);
返回面板;
}
私有JPanel getLeavePanel()
{
JPanel面板=新的JPanel();
面板设置布局(新边框布局(5,5));
panel.setBorder(BorderFactory.createEmptyByOrder(5,5,5,5));
JPanel leaveHeaderPanel=新的JPanel();
leveHeaderPanel.setLayout(新的GridLayout(0,1,5,5));
叶头板(
CreateTitleBorder(“选择休假类型:”);
JPanel leaveTypePanel=新的JPanel();
leaveTypePanel.setLayout(新的FlowLayout(
FlowLayout(左,5,5));
临时休假=新的临时休假(“临时休假”);
SpecialButton=新的JRadioButton(“特殊假期”);
sickRButton=新的JRadioButton(“病假”);
privilegeRButton=新的JRadioButton(“特权假期”);
radioButtonGroup=新建ButtonGroup();
radioButtonGroup.add(随意按钮);
radioButtonGroup.add(特殊按钮);
radioButtonGroup.add(sickRButton);
radioButtonGroup.add(privilegeRButton);
leaveTypePanel.add(随意按钮);
leaveTypePanel.add(特殊按钮);
leaveTypePanel.add(镰刀按钮);
leaveTypePanel.add(privilegeRButton);
JPanel applyLeavePanel=新的JPanel();
applyLeavePanel.setLayout(新的FlowLayout(
FlowLayout(左,5,5));
JLabel applyleavelab=新JLabel(
“申请(天数):”,JLabel.CENTER);
leaveDaysField=新的JTextField(5);
checkLeaveButton=新按钮(“检查休假可用性”);
添加(applyLeaveLabel);
添加(leaveDaysField);
applyLeavePanel.add(选中LeaveButton);
leaveHeaderPanel.add(leaveTypePanel);
leaveHeaderPanel.add(applyLeavePanel);
notesArea=新的JTextArea(10,10);
notesScroller=新的JScrollPane();
注:订单(
BorderFactory.createTitledBorder(
“留言(最多200个字符):”;
notesScroller.setViewportView(notesArea);
面板.添加(leaveHeaderPanel,BorderLayout.第_页开始);
面板。添加(注释滚动,边框布局。中心);
返回面板;
}
私有JPanel getApplyPanel()
{
JPanel面板=新的JPanel();
applyLeaveButton=新JButton(“应用”);
面板.添加(ApplyLeave按钮);
返回面板;
}
公共静态void main(字符串[]args)
{
Runnable Runnable=新的Runnable()