Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法添加滚动窗格,未显示错误

无法添加滚动窗格,未显示错误
EN

Stack Overflow用户
提问于 2013-11-17 15:40:43
回答 2查看 100关注 0票数 0

我在这里读到了许多其他问题,所有的建议都是一样的,但它对我来说仍然不起作用,什么都没有发生。

我的代码是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
final JTextArea ta = new JTextArea();
ta.setPreferredSize(new Dimension(310, 325));
ta.setMinimumSize(new Dimension(310, 325));
ta.setEditable(false);
ta.setFont(new Font("Tahoma", Font.PLAIN, 11));

JScrollPane sp = new JScrollPane(ta);
contentPane.add(sp);

contentPane被设置为程序的乞求

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
contentPane = new JPanel();
contentPane.setBackground(Color.GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);

提前感谢:)

编辑:我做了一些调整,现在滚动窗格出现了,但当它这样做时,由于某种原因,textArea消失了。这是整个程序的粘贴板,只要搜索scrollPane或textArea即可。

http://pastebin.com/4hS85zZt

谢谢!!

EN

回答 2

Stack Overflow用户

发布于 2013-11-17 15:46:57

JScrollPane上使用setPreferedSize()setMinimumSize()方法。不要直接在JTextArea上使用它们,因为它是不可滚动的。所以请使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JScrollPane sp = new JScrollPane(ta);
sp.setPreferredSize(new Dimension(310, 325));
sp.setMinimumSize(new Dimension(310, 325));

而不是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JTextArea ta = new JTextArea();
ta.setPreferredSize(new Dimension(310, 325));
ta.setMinimumSize(new Dimension(310, 325));

你的scrollPane就能工作了。

票数 0
EN

Stack Overflow用户

发布于 2013-11-17 23:00:46

您的代码存在一些问题:

  • 你正在设置JTextArea的preferredSize --这是你永远不应该做的事情。如果您将其放在JScollPane中,如果添加了文本行,则文本区域现在不能增长,因此滚动将是无用的。这一切都已经在您的问题的一个答案的注释中说明了,但是您忽略了它们--为什么?
  • 通过其constructor.
  • You're设置JTextArea的列和行,将MouseListener添加到JButton,这是您几乎永远不应该做的事情。
  • 你要把JTextArea添加到JScrollPane,然后再把JTextArea添加到JScrollPane --为什么?
  • 你要把JTextArea添加到没有JScrollPane的图形用户界面,然后再把它添加到JScrollPane --不要这样做。您只能将组件添加到一个容器中。只需将它添加到JScrollPane中,并将JScrollPane添加到图形用户界面中,然后就可以使用它了。
  • 在您了解Swing和布局管理器之前,您正在使用windows GUI构建器工具。不要这样做。在滥用这些工具之前,先学习使用Swing编写代码,从而使自己陷入困境。

你的整个程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.EmptyBorder;

public class RateTesterWindow extends JFrame {

   private JPanel contentPane;
   private JTextField textField_1;
   private JTextField textField;

   /**
    * Launch the application.
    */
   public static void main(String[] args) {
      EventQueue.invokeLater(new Runnable() {
         public void run() {
            try {
               RateTesterWindow frame = new RateTesterWindow();
               frame.setVisible(true);
            } catch (Exception e) {
               e.printStackTrace();
            }
         }
      });
   }

   /**
    * Create the frame.
    */
   public RateTesterWindow() {
      setResizable(false);
      setTitle("L2PRIDE RATE TESTER v0.1");
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setBounds(100, 100, 350, 377);
      contentPane = new JPanel();
      contentPane.setBackground(Color.GRAY);
      contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
      setContentPane(contentPane);

      JLabel lblRateTester = new JLabel("RATE TESTER");
      lblRateTester.setFont(new Font("Tahoma", Font.BOLD, 18));

      JSeparator separator = new JSeparator();
      separator.setBackground(Color.BLACK);

      final JLabel lblPleaseEnterRate = new JLabel("Rate:");
      lblPleaseEnterRate.setFont(new Font("Tahoma", Font.BOLD, 11));

      final JRadioButton rdbtnDreadItem = new JRadioButton("Dread Item");
      rdbtnDreadItem.addMouseListener(new MouseAdapter() {
         @Override
         public void mouseClicked(MouseEvent e)
         {
            if (rdbtnDreadItem.isSelected())
            {
               textField.setText("-----");
               textField.setEditable(false);
            }
            else
            {
               textField.setText("");
               textField.setEditable(true);
            }
         }
      });
      rdbtnDreadItem.setToolTipText("Will use dread item chances like they are in game.");

      JLabel lblScrolls = new JLabel("Scrolls:");
      lblScrolls.setFont(new Font("Tahoma", Font.BOLD, 11));

      final JLabel lblResults = new JLabel("ABOUT:");
      lblResults.setFont(new Font("Tahoma", Font.BOLD, 12));


      JSeparator separator_1 = new JSeparator();

      JSeparator separator_2 = new JSeparator();
      separator_2.setBackground(Color.BLACK);

      JSeparator separator_3 = new JSeparator();
      separator_3.setBackground(Color.LIGHT_GRAY);

      textField_1 = new JTextField();
      textField_1.setColumns(10);

      textField = new JTextField();
      textField.setColumns(10);

      final JTextArea textArea = new JTextArea(10, 30);
      // textArea.setPreferredSize(new Dimension(310, 325));
      // textArea.setMinimumSize(new Dimension(310, 325));
      textArea.setEditable(false);
      textArea.setFont(new Font("Tahoma", Font.PLAIN, 11));
      textArea.setText("some info");

      final JScrollPane scrollPane = new JScrollPane(textArea);
      scrollPane.setVisible(false);

      JButton btnNewButton = new JButton("RUN!");
      btnNewButton.addMouseListener(new MouseAdapter()
      {
         @Override
         public void mouseClicked(MouseEvent e)
         {
            lblResults.setText("RESULTS:");
            if ((!rdbtnDreadItem.isSelected() && !isNumeric(textField.getText())) || !isNumeric(textField_1.getText()) || textField.getText().startsWith("0") || textField_1.getText().startsWith("0") || textField.getText().equals("100"))
            {
               textArea.setText("Rate and scrolls must be valid numbers.");
            }
            else
            {
               textArea.setText(doYourMagic(rdbtnDreadItem.isSelected() ? 60 : Integer.parseInt(textField.getText()), Integer.parseInt(textField_1.getText()), rdbtnDreadItem.isSelected()));
               // scrollPane.setViewportView(textArea);
               scrollPane.setVisible(true);
            }
         }
      });

      GroupLayout gl_contentPane = new GroupLayout(contentPane);
      gl_contentPane.setHorizontalGroup(
         gl_contentPane.createParallelGroup(Alignment.TRAILING)
            .addComponent(separator, GroupLayout.DEFAULT_SIZE, 343, Short.MAX_VALUE)
            .addGroup(gl_contentPane.createSequentialGroup()
               .addGap(185)
               .addComponent(separator_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
               .addContainerGap(158, Short.MAX_VALUE))
            .addGroup(gl_contentPane.createSequentialGroup()
               .addGap(103)
               .addComponent(lblRateTester)
               .addContainerGap(120, Short.MAX_VALUE))
            .addGroup(gl_contentPane.createSequentialGroup()
               .addGap(30)
               .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
                  .addGroup(gl_contentPane.createSequentialGroup()
                     .addComponent(lblPleaseEnterRate)
                     .addPreferredGap(ComponentPlacement.RELATED)
                     .addComponent(textField, GroupLayout.PREFERRED_SIZE, 24, GroupLayout.PREFERRED_SIZE)
                     .addGap(16)
                     .addComponent(lblScrolls)
                     .addPreferredGap(ComponentPlacement.RELATED)
                     .addComponent(textField_1, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)
                     .addGap(18)
                     .addComponent(rdbtnDreadItem))
                  .addComponent(separator_3, GroupLayout.PREFERRED_SIZE, 272, GroupLayout.PREFERRED_SIZE))
               .addContainerGap(41, Short.MAX_VALUE))
            .addGroup(gl_contentPane.createSequentialGroup()
               .addGap(135)
               .addComponent(btnNewButton)
               .addContainerGap(151, Short.MAX_VALUE))
            .addGroup(gl_contentPane.createSequentialGroup()
               .addContainerGap()
               .addComponent(separator_2, GroupLayout.PREFERRED_SIZE, 309, GroupLayout.PREFERRED_SIZE)
               .addContainerGap(24, Short.MAX_VALUE))
            .addGroup(gl_contentPane.createSequentialGroup()
               .addGap(136)
               .addComponent(lblResults)
               .addContainerGap(162, Short.MAX_VALUE))
            .addGroup(Alignment.LEADING, gl_contentPane.createSequentialGroup()
               .addContainerGap()
               .addComponent(textArea, GroupLayout.PREFERRED_SIZE, 299, GroupLayout.PREFERRED_SIZE)
               .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
               .addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 16, GroupLayout.PREFERRED_SIZE)
               .addContainerGap())
      );
      gl_contentPane.setVerticalGroup(
         gl_contentPane.createParallelGroup(Alignment.LEADING)
            .addGroup(gl_contentPane.createSequentialGroup()
               .addComponent(lblRateTester)
               .addPreferredGap(ComponentPlacement.RELATED)
               .addComponent(separator, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
               .addPreferredGap(ComponentPlacement.RELATED)
               .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
                  .addComponent(lblPleaseEnterRate)
                  .addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
                     .addComponent(lblScrolls, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                     .addComponent(textField, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE))
                  .addComponent(textField_1, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE)
                  .addComponent(rdbtnDreadItem, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE))
               .addGap(18)
               .addComponent(separator_3, GroupLayout.PREFERRED_SIZE, 2, GroupLayout.PREFERRED_SIZE)
               .addPreferredGap(ComponentPlacement.UNRELATED)
               .addComponent(btnNewButton)
               .addPreferredGap(ComponentPlacement.UNRELATED)
               .addComponent(separator_2, GroupLayout.PREFERRED_SIZE, 2, GroupLayout.PREFERRED_SIZE)
               .addPreferredGap(ComponentPlacement.RELATED)
               .addComponent(lblResults)
               .addPreferredGap(ComponentPlacement.RELATED)
               .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
                  .addGroup(gl_contentPane.createSequentialGroup()
                     .addComponent(textArea, GroupLayout.PREFERRED_SIZE, 163, GroupLayout.PREFERRED_SIZE)
                     .addGap(18)
                     .addComponent(separator_1, GroupLayout.PREFERRED_SIZE, 2, GroupLayout.PREFERRED_SIZE))
                  .addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 163, GroupLayout.PREFERRED_SIZE)))
      );
      contentPane.setLayout(gl_contentPane);
   }

   private String doYourMagic(int rate, int scrolls, boolean dread)
   {
      int success = 0;
      int row = 0, highRow = 0;
      String magic = "";
      Random rand = new Random();

      for (int i = 0; i < scrolls; i++)
      {
         int chance = rand.nextInt(99);
         if (dread && row > 0)
            rate = rate - (5 * row);
         if (chance >= rate)
         {
            row = 0;
         }
         else
         {
            success++;
            if (++row > highRow)
               highRow = row;
         }

         magic = magic + "SCROLL USED: <--- Roll: " + chance + " <--- Scroll Rate: " + rate + "% <--- " + (row > 0 ? "Success" : "Fail") + "\r\n";
         if (dread) // reset dread rate
            rate = 60;
      }

      magic = magic + "\r\n~~~~ TEST RESULTS OF " + rate + "% RATE USING " + scrolls + " SCROLLS ~~~~\r\n";
      magic = magic + "Total Success: " + success + "\r\n";
      magic = magic + "Highest Success Row: " + highRow + "\r\n";
      return magic;
   }

   private boolean isNumeric(String str)  
   {  
      try  
      {  
         Integer.parseInt(str);
      }  
      catch (NumberFormatException nfe)  
      {  
         return false;  
      }
      return true;  
   }
}

编辑

在使用简单得多的布局的图形用户界面中显示JTextArea的示例sscce

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class ScrollPaneEg {
   public static final String LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
         + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, "
         + "quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. "
         + "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. "
         + "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. ";

   public static void main(String[] args) {
      final JTextArea textarea = new JTextArea(10, 30);
      textarea.setWrapStyleWord(true);
      textarea.setLineWrap(true);
      textarea.setEditable(false);
      textarea.setFocusable(false);
      JScrollPane scrollpane = new JScrollPane(textarea);
      scrollpane
            .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

      JPanel topPanel = new JPanel();
      topPanel.add(scrollpane);
      topPanel.add(new JButton(new AbstractAction("Press Me") {

         @Override
         public void actionPerformed(ActionEvent e) {
            for (int i = 0; i < 200; i++) {
               textarea.append(LOREM_IPSUM);
            }
         }
      }));

      JPanel mainPanel = new JPanel(new BorderLayout(4, 4));
      mainPanel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));

      mainPanel.add(topPanel, BorderLayout.PAGE_START);
      mainPanel.add(scrollpane, BorderLayout.CENTER);

      JFrame frame = new JFrame("Layout Example");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20032614

复制
相关文章
ajax提交form表单
$.ajax({ cache: true, type: "POST", url:ajaxCallUrl, data:$('#yourformid').serialize(),// 你的formid,serialize()函数会把表单要提交的数据序列化成参数形式 async: false,
用户1503405
2021/09/23
3.4K0
使用ajax方法实现form表单的提交
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载。 写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说想要将控制权放在前端,通过js来操作页面的跳转或者数据变化。 一般这种异步的操作,我们都会想到ajax方式,因此在实现了功能后就整理了这篇文章,通过ajax方法实现for
程序员十三
2018/03/15
3.1K0
利用php发信组件实现表单提交邮件发送功能
V站笔记 平时的钓鱼盗号也是根据这种原理 <?php//error_reporting(E_ALL);error_reporting(E_STRICT);date_default_timezone_s
V站CEO-西顾
2018/06/10
8600
通过Ajax提交表单的数据
当监听到表单的提交事件后,可以调用事件对象的 event.preventDefault()函数,来阻止表单的提交和页面的跳转,示例代码如下:
岳泽以
2022/10/26
2.3K0
pbootcms使用Ajax无刷新提交留言及表单
PbootCMS 本身对于使用ajax请求进行提交时会返回Json数据,那么我们可以无需使用API的情况下实现ajax 提交留言,并自定义页面提示,提升用户体验。 关于pb的ajax很多文章代码都有个小缺陷,什么都不填点击提交后端显示空白数据,下面我根据官方提供的代码改良了一下 1.表单验证 <form onsubmit="return submsg(this);">     联系人<input type="text" name="contacts" required id="contacts">     
小唐同学.
2022/02/23
3.5K0
pbootcms使用Ajax无刷新提交留言及表单
表单提交方式为post,表单中提交的字段名称需要与后台自定义表单中添加的字段一致,否则会导致提交失败。
小唐同学.
2022/02/23
3.6K0
Ajax使用formData提交带图片上传的表单
记录一下今天踩过的坑。。这么个问题居然搞了快两个小时了。ssm框架,前台form带图片上传,因为效验表单数据,所以不能直接submit。
sunonzj
2022/06/21
2.3K0
Pbcms 使用 Ajax 无刷新提交留言及表单
PbootCMS 本身对于使用 ajax 请求进行提交时会返回 Json 数据,那么我们可以无需使用 API 的情况下实现 ajax 提交留言,并自定义页面提示,提升用户体验。
Savalone
2020/02/11
2.9K0
WordPress 文章发布时发送邮件通知所有用户
这个版本跟之前那个不一样,在原基础上添加了可选是否给所有用户发邮件,为了防止泛滥,只能是发布新文章时勾选有效,先看看图吧!
白黎
2023/03/09
6537
WordPress 文章发布时发送邮件通知所有用户
用JQUERY做大表单(多表单域)AJAX提交
function postData() { var post = ""; $(":text").each(function() { post += "&" + this.name + "=" + this.value; }); $(":password").each(function() { post += "&" + this.name + "=" + this.value; }
liulun
2022/05/09
1.3K0
WordPress SMTP发送邮件设置
前几天设置了ssl证书,用的是Let’s Encrypt免费ssl证书设置好了才发现不能发送邮件,这点事我不能接受的,以前用的国外的VPS一直没有问题,搬至腾讯云就不能用mail()函数发邮件,刚开始一直以为是我的Exim4(debian默认的就是这个)配置有问题,然后就开始重装centos,装好以后还是不行,一直以为配置有问题,看日志发现不通,然后突然想到阿里云屏蔽25端口,是不是腾讯云也屏蔽了25端口。结果不出意料真的屏蔽了。害我重装了好几次申请Let’s Encrypt免费证书的次数也用光了。
爱游博客
2019/08/07
3.1K0
WordPress SMTP发送邮件设置
form表单提交与ajax消息传递
后台: def index(request): if request.method == 'POST': print(request.POST) # 普通的键值对:<QueryDict: {'name': ['xxx']}> print(request.body) #print(request.FILES) #传文件< MultiValueDict: {'myfile': [ < InMemoryUploadedFile: day17课件.md(application / octet - stream) >]} > return HttpResponse('OK') return render(request, 'index.html')
小小咸鱼YwY
2019/09/11
3.8K0
解决kindeditor中ajax提交表单无法获取数据的问题
在上面使用了afterBlur 方法做了一个处理,该方法是当编辑框失焦的是触发的,然后再去做数据同步.
飞奔去旅行
2019/06/13
3.5K0
阻止HTML表单提交跳转页面,使用 Jquery Ajax 请求接口
站长源码网 1. HTML 表单 ---- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <form action="" method="post" onsubmit="return save(this)"> 手机号 <input type="text" name="mobile" autocomplete="off"> 登录密码 <input type="text" name="p
很酷的站长
2023/01/16
3.1K0
ajax和form提交上传文件表单
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/09/17
2.1K0
ajax和form提交上传文件表单
SpringBoot发送邮件+使用html模板发送邮件
这两天在公司做商城系统有一个业务用到了发送邮件功能 springboot 有spring-boot-starter-mail
@依然范特西
2022/12/12
3K0
form表单提交后如何弹出对话框_ajax提交form表单数据
没想到有这么多人浏览这个文章,看来网络的文章害人不浅啊,我重新把代码格式化了,大家好好看吧。
全栈程序员站长
2022/11/09
3.7K0
WordPress 技巧:修改 WordPress 默认发送邮件的邮箱
WordPress 默认发送邮件会使用一个 WordPress@博客域名 的邮箱发送邮件,可以通过以下代码实现让博客管理员邮箱发送邮件。贴到当前主题的 functions.php 文件即可。
Denis
2023/04/15
6060
最简单的方式发送邮件,让程序出错自动发邮件
用过 Django 的朋友肯定知道 Django 的优雅和易用,它的 mail 模块也不例外,我用了之后再也离不开,从此发送邮件只用 djangomail。今天分享一下如何使用 djangomail 发送邮件,如何让程序在抛出异常时自动将堆栈信息发送至邮箱。
somenzz
2021/07/01
7050
最简单的方式发送邮件,让程序出错自动发邮件
WordPress 配置WP SMTP 插件发送邮件
WordPress 如果由发送邮件的需求时可以使用 WP SMTP 插件,发送邮件的场景有,注册验证、找回密码、客户下单、留言等等。WP SMTP 插件的配置也比较简单,下面以QQ邮箱为例来演示一下WP SMTP 插件的配置。
Power
2023/02/28
1.2K0

相似问题

使用AJAX提交表单并在Wordpress网站中处理响应

31

使用ajax提交表单时出错

12

使用Jquery提交AJAX表单时出错

22

使用ajax提交表单时,如何发送电子邮件?

20

Wordpress使用AJAX提交表单

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文