【问题标题】:JTextField problemJTextField 问题
【发布时间】:2011-04-02 13:19:00
【问题描述】:
import org.jsoup.Jsoup;


@SuppressWarnings("unused")
public class SimpleWebCrawler extends JFrame {

    JTextField yourInputField = new JTextField(20);
    static JTextArea _resultArea = new JTextArea(200, 200);
    JScrollPane scrollingArea = new JScrollPane(_resultArea);
    private final static String newline = "\n";



    public SimpleWebCrawler() throws MalformedURLException {


        _resultArea.setEditable(false);

        String word2 = yourInputField.getText();

        try {
            URL my_url = new URL("http://" + word2 + "/");
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    my_url.openStream()));
            String strTemp = "";
            while (null != (strTemp = br.readLine())) {
                _resultArea.append(strTemp + newline);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        _resultArea.append("\n");
        _resultArea.append("\n");
        _resultArea.append("\n");


        String url = "http://" + word2 + "/";
        print("Fetching %s...", url);

        try{
        Document doc = Jsoup.connect(url).get();
        Elements links = doc.select("a[href]");


        System.out.println("\n");

        BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\user\\fypworkspace\\FYP\\Link\\abc.txt"));
        _resultArea.append("\n");
        for (Element link : links) {
            print("  %s  ", link.attr("abs:href"), trim(link.text(), 35));

            bw.write(link.attr("abs:href"));
            bw.write(System.getProperty("line.separator"));
        }
        bw.flush();
        bw.close();
        } catch (IOException e1) {

        }
        JPanel content = new JPanel();
        content.setLayout(new BorderLayout());
        content.add(scrollingArea, BorderLayout.CENTER);
        content.add(yourInputField);

        this.setContentPane(content);
        this.setTitle("Crawled Links");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.pack();


        }

        private static void print(String msg, Object... args) {

            _resultArea.append(String.format(msg, args) +newline);
        }

        private static String trim(String s, int width) {
            if (s.length() > width)
                return s.substring(0, width - 1) + ".";
            else
                return s;
        }

        //.. Get the content pane, set layout, add to center




    public static void main(String[] args) throws IOException {



        JFrame win = new SimpleWebCrawler();
        win.setVisible(true);

    }
}

我正在尝试创建一个 JTextField 来接收用户的输入。我创建了一个 JTextField 实例并添加到 JFrame 中。但是,此代码不起作用。介意指出我的错误吗?它应该可以工作,但是我找不到问题所在。我还有什么想念的吗?

JTextField 的代码:

JTextField yourInputField = new JTextField(20);
String word2 = yourInputField.getText();
content.add(yourInputField);

这一行显示了 IllegalArgumentException 的错误。

my_url.openStream()

我希望看到一个 JTextField 弹出来接收输入,这是一个随机 URL,代码将处理该 URL。抱歉我的问题表现不佳。我对编程问答论坛不是很熟悉。

【问题讨论】:

  • 当您提出问题时,请解释“不工作”的含义。它没有做什么?它不显示吗?尺寸不合适吗?等
  • 它不显示 Jtextfield 并立即打印出 IllegalArgumentException。
  • 您似乎希望我们复制该源,添加导入,追踪“jsoup”,提供输入文本文件并猜测“不工作”是什么意思?不用了,谢谢,我有更好的事情要做。尽快获得更好的帮助:1) 发布SSCCE 2) 准确描述您期望看到的内容。 3) 准确描述您看到的内容。
  • 哪一行打印出异常?什么是完整的堆栈跟踪?
  • 嗨,我编辑了我的问题以回应您的 cmets。很抱歉显示不好。

标签: java swing textfield


【解决方案1】:

您在哪里读取文本字段的输入?我看到它在构造函数中发生过一次,但是由于您正在从一个新的空文本字段中读取文本,因此您不会通过该调用从用户那里获得任何输入。

如果您希望用户能够在文本字段中输入数据并在之后处理输入,您将需要使用带有动作侦听器等的事件驱动编程。这将允许部分程序在用户执行某些操作(如文本输入)时运行。

【讨论】:

  • 嗨,从我提供的代码来看,我应该把文本字段的动作监听器放在哪里?
【解决方案2】:

这里的一个问题是您没有指定要正确添加输入字段的位置。例如使用

  content.add(yourInputField, BorderLayout.SOUTH);

改为

  content.add(yourInputField);

如果您没有指定值,BorderLayout 默认添加到中心,因此您看不到滚动区域。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-28
    • 2013-02-10
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2018-01-05
    相关资源
    最近更新 更多