java怎么设有滚动的标签_java – JScrollPane’laggy’滚动,包含许多组件
我有3045的表格!组件(1015个标签,1015个文本字段,1015个组合框).所有这些都在JPanel和JScrollPane中的JPanel中.问题是滚动是“滞后”.我的PC上有4GB RAM,所以我不认为这是问题所在.怎么了?
在我的任务管理器中,应用程序使用~100mb.
我的代码:
final JScrollPane scrollPane_1 = new JScrollPane();
final JPanel panel = new JPanel();
panel.setLayout(null);
scrollPane_1.setViewportView(panel);
int y =0;
for(int i=0; i<1015;i++)
{
JLabel length = new JLabel();
length.setBounds(10, y, 350, 20);
length.setFont(new Font("Tahoma", Font.BOLD, 11));
length.setEnabled(false);
panel.add(length);
panel.revalidate();
JComboBox combo = new JComboBox();
combo.setModel(new DefaultComboBoxModel(new String[] {"=", "!="}));
combo.setBounds(10, y + 20, 70, 20);
panel.add(combo);
panel.revalidate();
JTextField text = new JTextField();
text.setBounds(10 + 80, y + 20, 200, 20);
panel.add(text);
panel.revalidate();
}
编辑:我做了很多测试,我意识到只有当我使用组合框时才存在延迟,如果我使用例如文本字段而不是组合框,滚动是正常的…
解决方法:
使用布局管理器时,您的代码对我来说似乎并不那么迟钝.请测试一下:
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.*;
public class Foo2 {
protected static final int PREF_W = 400;
protected static final int PREF_H = 400;
public static void main(String[] args) {
final JScrollPane scrollPane_1 = new JScrollPane() {
@Override
public Dimension getPreferredSize() {
return new Dimension(PREF_W, PREF_H);
}
};
final JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 1));
scrollPane_1.setViewportView(panel);
for (int i = 0; i < 1015; i++) {
JPanel innerPanel = new JPanel();
innerPanel.setLayout(new BoxLayout(innerPanel, BoxLayout.LINE_AXIS));
JLabel length = new JLabel("foo");
length.setFont(new Font("Tahoma", Font.BOLD, 11));
length.setEnabled(false);
innerPanel.add(length);
innerPanel.add(Box.createHorizontalGlue());
JComboBox combo = new JComboBox();
combo.setPrototypeDisplayValue(" ");
combo.setModel(new DefaultComboBoxModel(new String[] { "=", "!=" }));
combo.setMaximumSize(combo.getPreferredSize());
innerPanel.add(combo);
JTextField text = new JTextField(10);
JPanel textWrapper = new JPanel();
textWrapper.add(text);
innerPanel.add(textWrapper);
panel.add(innerPanel);
}
JFrame frame = new JFrame();
frame.add(scrollPane_1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
编辑
相反,使用JTable怎么样?
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class Foo3 {
protected static final int PREF_W = 400;
protected static final int PREF_H = 400;
public static void main(String[] args) {
final JScrollPane scrollPane_1 = new JScrollPane() {
@Override
public Dimension getPreferredSize() {
return new Dimension(PREF_W, PREF_H);
}
};
String[] columnNames = {"Foo", "Bar", "Baz"};
String[][] data = new String[1015][3];
for (int i = 0; i < data.length; i++) {
data[i] = new String[]{"foo", "==", ""};
}
DefaultTableModel model = new DefaultTableModel(data, columnNames){
@Override
public boolean isCellEditable(int row, int column) {
return (column != 0);
}
};
JTable table = new JTable(model);
table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(
new JComboBox(new String[]{"==", "!="})));
final JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 1));
scrollPane_1.setViewportView(table);
JFrame frame = new JFrame();
frame.add(scrollPane_1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
标签:java,performance,swing,jscrollpane
来源: https://codeday.me/bug/20190728/1567100.html
java怎么设有滚动的标签_java – JScrollPane’laggy’滚动,包含许多组件相关推荐
- java注释是用什么标签_java的注释标签是什么?
java的注释标签是什么? 发布时间:2020-05-23 15:22:41 来源:亿速云 阅读:112 作者:鸽子 注释是一门语言的重要组成成分,比如C语言,HTML语言,PHP语言,他们都有自己的 ...
- java+循环的时候用标签_java中循环标签的使用
标签: 以前不知道在循环中可以使用标签.最近遇到后,举得还是有其独特的用处的.我这么说的意思是说标签在循环中可以改变循环执行的流程.而这种改变不是我们以前单独使用break或者是continue能够达 ...
- java怎么设有滚动的标签,html标签overflow属性和javascript实现div标签滚动
原标题:html标签overflow属性和javascript实现div标签滚动 昨天一个朋友说他实现了一个div循环滚动显示的demo,但是弄到jsp中就不滚动了,而且debug测试div的scro ...
- java foreach标签_Java中Velocity foreach循环标签详解
Java中Velocity foreach循环标签详解 Java Velocity中foreach循环可以很容易的遍历数组或者集合. 定义 #foreach( $elem in $allElems) ...
- java设计图形界面的基本思路_java图形界面之布局设计
在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计.java.awt中定义了多种布局类,每种布局类对应一种布局的策略.常用的有以下布局类: •FlowLayout ...
- Java GUI:将JPanel添加进JScrollPane
实现的目标: 因为在滚动框中含有很多个Java GUI 组件,因此这里采用JPanel面板包住这些组件,在用JScrollPane实现滚动 问题1:布局揉在一起 JPanel有自己默认的布局方式,因此 ...
- java常问的报错_java常见报错及解决
Java常见报错信息: Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:E ...
- JavaSwing_3.2: JScrollPane(滚动面板)
本文链接: http://blog.csdn.net/xietansheng/article/details/74366495 Java Swing 图形界面开发(目录) 1. 概述 官方JavaDo ...
- java中table是什么标签_[Java教程]javascript格式化table标签内容
[Java教程]javascript格式化table标签内容 0 2015-07-12 20:00:08 项目中遇到这样的需求,一大段文章正文的html代码在手机中显示不全,原因是由于其它有table ...
最新文章
- iOS开发工具——网络封包分析工具Charles
- wcf高并发 mysql_使用nginx搭建高可用,高并发的wcf集群
- JVM 核心技术 调优分析与面试经验
- 苹果开发者_苹果,你的开发者文档写得烂透了
- win10部署webservice网站的步骤
- NLP之路-warm up
- MySQL主从复制原理(原理+实操)
- 解决只能滑动弹框内容不能滑动弹框底层内容
- estore商城案例(一)------用户注册邮件激活(上)
- 设计链表python(leetcode707)
- python数字转换英文26字母_用python实现英文字母和相应序数转换的方法
- job title 总汇
- 盘点2014:10个词让你看懂今年的移动互联网
- 单词Demantoite翠榴石demantoite英语
- ECAM6--变量与函数
- [读书笔记]How to Get the Most of Studying
- 网络营销理论研究:网络营销信息传递原理及其实践价值
- 对于刚入行的Android程序员来说,找Android培训机构应该注意哪些方面?
- Power BI 2021日历表DAX代码
- AutoCAD Mechanical v2022.1.2 CAD机械版简体中文精简直装版