无法使JTextArea滚动. [英] Unable to make the JTextArea scrollable..!

查看:66
本文介绍了无法使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..)


JScrollPane sbrText = new JScrollPane(textArea);
sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);  
contentPane.add(sbrText);

每次尝试时,该文本区域都不可见.(我正在使用Eclipse的Window Builder插件和布局作为绝对布局".)

When ever I try with this,the text area is not visible..(I am using Eclipse's Window Builder plugin and layout as "Absolute Layout")..

推荐答案

在这里,我做了同样的事情,使用Nested Layout,请看一下代码示例:

Here I have done, the same thingy using Nested Layout, have a look at the code example :

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);
    }
}

输出:

这篇关于无法使JTextArea滚动.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆