如何在Java秋千的Textarea上设置卷轴



我正在研究一个使用Java中的Swing Library的项目。在我的窗口中,文本area充满了一些内容。

但是,文本方面是静态的,没有滚动条,因此它仅显示内容溢出之前的某些内容。

如何在文本方面添加滚动性和/或使其动态?

ps-我在Java中对摇摆和GUI非常新。

我在互联网上清除了解决方案,发现了很多东西,但没有一个在实施方面。

我尝试使用滚动板,滚动条。我什至将布局管理器设置为BorderLayout((和GridBaglayout,但这只是使窗口搞砸了,没有解决我对静态文本的问题。

package crawler;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class WebCrawler extends JFrame {
    public WebCrawler() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("WebCrawlerWindow");
        setLocationRelativeTo(null);
        setSize(800, 600);
        JTextField urlName = new JTextField();
        urlName.setName("UrlTextField");
        urlName.setBounds(50,20,600,20);
        add(urlName);
        JTextArea jlb = new JTextArea("HTML code?");//this is the TextArea that needs to be scrollable
        jlb.setName("HtmlTextArea");
        jlb.setBounds(50,45,700,1000);
        jlb.setAutoscrolls(true);
        jlb.setLineWrap(true);
        jlb.setWrapStyleWord(true);
        jlb.disable();
        add(jlb, BorderLayout.CENTER);
        JButton download = new JButton();
        download.setName("RunButton");
        download.setBounds(660,20,70,20);
        download.setText("Get Code");
        var LINE_SEPARATOR = System.getProperty("line.separator");
        download.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String url = urlName.getText().toLowerCase();/* Get url from JTextField */
                try {
                    if(!url.substring(0,7).equals("https://"))
                        url = String.join("","https://", url);
                    final InputStream inputStream = new URL(url).openStream();
                    final BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
                    final StringBuilder stringBuilder = new StringBuilder();
                    String nextLine;
                    while ((nextLine = reader.readLine()) != null) {
                        stringBuilder.append(nextLine);
                        stringBuilder.append(LINE_SEPARATOR);
                    }
                    final String siteText = stringBuilder.toString();
                    jlb.setText(siteText);
                } catch(Exception ex) {
                    jlb.setText("Link Not Found");
                }
            }
        });
        add(download);
        setLayout(null);
        setVisible(true);
    }
}
jlb.setAutoscrolls(true);
...
add(jlb, BorderLayout.CENTER);

setAutoScrolls(...)方法不能使文本区域可滚动。

您需要将文本区域添加到JScrollPane并将滚动窗格添加到框架:

//jlb.setAutoscrolls(true);
...
//add(jlb, BorderLayout.CENTER);
JScrollPane scrollPane = new JScrollPane( jlb );
add(scrollPane, BorderLayout.CENTER);

您也不应该使用空布局。秋千设计为与布局经理一起使用。

add(download, BorderLayout.PAGE_START);
//add(download);
//setLayout(null);

阅读有关如何使用边框布局以了解上述建议如何影响布局的部分。

相关内容

  • 没有找到相关文章

最新更新