如何获得JScrollPane中的组件

lg_asus 2010-12-22 11:18:30
在JScrollPane中通过setViewportView()或getViewport().add()方法加入一个组件,现在通过JScrollPane的getViewport().getView()或getViewport().getComponents() 等方法不能获得我所加入的组件,请问怎样才能获得其中的组件?

多谢!
...全文
216 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxg20042008 2011-10-24
  • 打赏
  • 举报
回复
好啊,找了八年
huntor 2010-12-22
  • 打赏
  • 举报
回复
JScrollPane scrollPane = new JScrollPane(new JTextArea());
JTextArea textarea = (JTextArea)(scrollPane.getViewport().getView());
sunyiz 2010-12-22
  • 打赏
  • 举报
回复
就是
getViewport().getView()
获得的为Component类型,
记得要使用这个组件的方法,
先得转换成你的组件类型
lg_asus 2010-12-22
  • 打赏
  • 举报
回复
试过了,也不行的
Jlins 2010-12-22
  • 打赏
  • 举报
回复
getComponent(int n) 试试看。
Jlins 2010-12-22
  • 打赏
  • 举报
回复
getComponent(int n) 试试看。
lg_asus 2010-12-22
  • 打赏
  • 举报
回复
strange!!!
在代码中同样的写法竟然不行, 另写一个demo就成功!!!

多谢几位!
Java调用Zip类批量压缩多个文件,此前有一个是压缩单个文件,也可参考,相关代码可找到此源码。   public class ZipDemo extends JFrame{   JFileChooser fileChooser; //文件选择器   JList fileList; //待压缩的文件列表   Vector files; //文件数据(待压缩文件)   JButton jbAdd; //增加文件按钮   JButton jbDelete; //删除文件按钮   JButton jbZip; //压缩按钮   JTextField target; //目标文件文本域   public ZipDemo(){   super("用ZIP压缩多个文件"); //调用父类构造函数   fileChooser=new JFileChooser(); //实例化文件选择器   files=new Vector(); //实例化文件数据Vector   fileList=new JList(files); //实例化已选择文件列表   jbAdd=new JButton("增加"); //实例化按钮组件   jbDelete=new JButton("删除");   jbZip=new JButton("压缩");   target=new JTextField(18);   JPanel panel=new JPanel(); //实例化面板,用于容纳按钮   panel.add(jbAdd); //增加组件到面板上   panel.add(jbDelete);   panel.add(jbZip);   JPanel panel2=new JPanel();   panel2.add(new JLabel("目标文件"));   panel2.add(target);   JScrollPane jsp=new JScrollPane(fileList);   Container container=getContentPane(); //得到容器   container.add(panel2,BorderLayout.NORTH); //增加组件到容器   container.add(jsp,BorderLayout.CENTER);   container.add(panel,BorderLayout.SOUTH);   jsp.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); //设置边界
Java代码编写的简单网页浏览器,仿IE基础功能,只能解析标准的HTML文件,现在流行的HTML5格式不能解析。使用方法:可直接输入文件名或网络地址,但必需事先连入网络。   JTextField jtfAddress; //输入html文件地址或网址   JButton jbGo; //转到文件按钮   JTextPane jtpShow; //显示文件   JLabel jlInfo; //提示信息   public HTTPBrowserDemo(){    super("html浏览器"); //调用父类构造函数    jtfAddress=new JTextField(20); //实例化地址输入框    jbGo=new JButton("转到"); //实例化转向按钮    jtpShow=new JTextPane(); //实例化显示内容框    jlInfo=new JLabel(); //实例化信息提示标签    JPanel panel=new JPanel(); //实例化面板    panel.add(new JLabel("地址")); //增加组件到面板上    panel.add(jtfAddress);    panel.add(jbGo);    JScrollPane jsp=new JScrollPane(jtpShow); //实例化滚动窗体    Container container=getContentPane(); //得到容器    container.add(panel,BorderLayout.NORTH); //增加组件到容器上    container.add(jsp,BorderLayout.CENTER);    container.add(jlInfo,BorderLayout.SOUTH);    jbGo.addActionListener(new ShowHTMLListener()); //事件处理,发生按钮点击时显示页面内容    jtfAddress.addActionListener(new ShowHTMLListener());    setSize(350,280); //设置窗口尺寸    setVisible(true); //设置窗口可视    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序   }   class ShowHTMLListener implements ActionListener { //显示页面内容事件处理    public void actionPerformed(ActionEvent event) {    try{    jlInfo.setText("正在连接..."); //显示提示信息    URL address=new URL(jtfAddress.getText()); //得到HTML页面的URL地址    jtpShow.setPage(address); //设置显示页面    jlInfo.setText("完成");    }    catch (Exception ex){    jlInfo.setText("连接出错");    ex.printStackTrace(); //输出出错信息    }    }   }
Java数据库查询结果的输出 摘自:北京海脉信息咨询有限公司   利用Java开发数据库应用时,经常需要在用户界面上显示查询结果。我们可以利用Vector、JTable、AbstractTableModel等三个类较好地解决这一问题。 类Vector:   定义如下: public class Vector extends AbstractList implements List , Cloneable , Serializable{…} 类JTable:   JTable组件是Swing组件比较复杂的小件,隶属于javax.swing包,它能以二维表的形式显示数据。类Jtable: 定义如下: public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible{…} 类AbstractTableModel:   定义如下: public abstract class AbstractTableModel extends Object implements TableModel, Serializable{…}   生成一个具体的TableModel作为AbstractTableMode的子类,至少必须实现下面三个方法: public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column);   我们可以建立一个简单二维表(5×5): TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 5; } public int getRowCount() { return 5;} public Object getValueAt(int row, int col) { return new Integer(row*col); } }; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table); 数据库及其连接方法:   我们采用Sybase数据库,数据库存放在数据库服务器。路径为:D:WORKER,数据库名为:worker.dbf。具有以下字段: 字段名 类型 Wno(职工号) VARCHAR Wname(职工名) VARCHAR Sex(性别) VARCHAR Birthday(出生日期) DATE Wage(工资) FLOAT   要连接此数据库,需使用java.sql包的类DriverManager。此类是用于管理JDBC驱动程序的实用程序类。它提供了通过驱动程序取得连接、注册,撤消驱动程序,设置登记和数据库访问登录超时等方法。   具体连接方法如下:   定位、装入和链接SybDriver类。 driver="com.sybase.jdbc.SybDriver"; SybDriver sybdriver=(SybDriver) Class.forName(driver).newInstance();   注册SybDriver类。 DriverManager.registerDriver(sybdriver);   取得连接(SybConnection)对象引用。 user="sa"; password=""; url="jdbc:sybase:Tds:202.117.203.114:5000/WORKER"; SybConnection connection= (SybConnection)DriverManager.getConnection (url,user,password); 建立完连接后,即可通过Statement接口进行数据库的查询与更改。 实现方法:   对象声明。   AbstractTableModel tm;   //声明一个类AbstractTableModel对象   JTable jg_table;//声明一个类JTable对象   Vector vect;//声明一个向量对象   JScrollPane jsp;//声明一个滚动杠对象   String title[]={"职工号","职工名",   "性别","出生日期","工资"};   //二维表列名   定制表格。   实现抽象类AbstractTableModel对象tm的方法:   vect=new Vector();//实例化向量   tm=new AbstractTableModel(){   public int getColumnCount(){   return title.length;}//取得表格列数   public int getRowCount(){   return vect.size();}//取得表格行数   public Object getValueAt(int row,int column){   if(!vect.isEmpty())   return   ((Vector)vect.elementAt(row)).elementAt(column);   else   return null;}//取得单元格的属性值   public String getColumnName(int column){   return title[column];}//设置表格列名   public void setValueAt   (Object value,int row,int column){}   //数据模型不可编辑,该方法设置为空   public Class getColumnClass(int c){   return getValueAt(0,c).getClass();   }//取得列所属对象类   public boolean isCellEditable(int row,int column){   return false;}//设置单元格不可编辑,为缺省实现   };   定制表格:   jg_table=new JTable(tm);//生成自己的数据模型   jg_table.setToolTipText("显示全部查询结果");   //设置帮助提示   jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);   //设置表格调整尺寸模式   jg_table.setCellSelectionEnabled(false);   //设置单元格选择方式   jg_table.setShowVerticalLines(true);//   设置是否显示单元格间的分割线   jg_table.setShowHorizontalLines(true);   jsp=new JScrollPane(jg_table);//给表格加上滚动杠   显示查询结果。   连接数据库:已给出。   数据库查询:   Statement stmt=connection.createStatement();   ResultSet rs=stmt.executeQuery   ("select * from worker");   显示查询结果:   vect.removeAllElements();//初始化向量对象   tm.fireTableStructureChanged();//更新表格内容   while(rs.next()){   Vector rec_vector=new Vector();   //从结果集取数据放入向量rec_vector   rec_vector.addElement(rs.getString(1));   rec_vector.addElement(rs.getString(2)); rec_vector.addElement(rs.getString(3)); rec_vector.addElement(rs.getDate(4));   rec_vector.addElement(new Float(rs.getFloat(5)));   vect.addElement(rec_vector);   //向量rec_vector加入向量vect   }   tm.fireTableStructureChanged();   //更新表格,显示向量vect的内容   实现示图记录前翻、后翻的效果,有两种方法:   如果软件环境支持JDBC2.0,可直接利用rs.prevoius()和rs.next()获得记录,然后通过类JTextField的setText()方法,显示出各个字段值。   如果不支持JDBC2.0,则可利用向量Vector按行取出JTable数据。自定义一个指针,用来记录位置。当指针加1时,取出上一行数据放入Vector显示;指针减1时,取出下一行数据显示。显示方法同上。
杰笛公共模块 Common Layer (开源项目) 我们于2007年4月决定开源杰笛公共模块。您可以到http://java.net/projects/jide-oss/去下载它的源代码。如果您是杰笛的付费用户,杰笛公共模块的源代码已经包括在下载包的src目录下面,您无需单独下载。 杰笛公共模块有超过十万行的程序和30多个组件和工具类,该产品是杰笛产品的基石。从2002年开始,它就是杰笛付费产品的一部分,所以它的质量和稳定性是可以保障的。您可以运行下面的webstart演示来看到该项目包括的组件。 许可方式 杰笛公共模块有两个许可渠道,都是免费的。这两个许可分别是GPL加classpath exception和免费商业许可。您可以点击链接看到许可的具体内容。第一个许可是在开源界广泛使用的许可。它也是Java的JDK使用的开源许可。第二个许可则是杰笛其它产品的许可一模一样,除了它是免费的。所有杰笛的收费用户都默认用这个许可,这样不需要改到开源许可。 技术支持 很多开源项目缺乏必要的技术支持。为了解决这样的问题,我们对杰笛公共模块的开源模式采用了下面的一些政策: 文档:所有的源代码都有javadoc。另外我们还编写了一个开发员使用手册,上面详细说明了怎样使用每一个组件。最后,我们还提供了很多的包括源代码的示例程序。 错误报告:我们将有专门的资源负责除了错误报告,然后根据优先级,决定修复这些错误。我们也接受来自广大爱好者的错误修复,当然我们的工作人员会认真审核您们的修复代码然后集成到我们的程序。 社区技术支持:我们提供了一个特别论坛,让你可以得到其他人的帮助下。为了鼓励大家都来贡献,我们也会参与讨论,并且对那些积极参与讨论的杰笛爱好者提供一些免费的产品许可证。 付费技术支持:如果您需要及时专业的支持,您可以随时从我们的网上商店购买杰笛公共模块年度维护更新(产品代码是#2090)。对于那些购买商业产品的客户,杰笛公共模块的技术支持是包括在内,这个论坛是专门为付费用户提供的论坛。 功能简介 界面组件 JideTabbedPane - an extended version of JTabbedPane supporting different tab shapes, color themes, shrinkable tabs, close button on tab, editable tab etc. JideSplitPane - an extended version of JSplitPane supporting multiple splits (JSplitPane can only have two splits) JideButton - an ideal replacement for a toolbar button JideSplitButton - a composite component which is a combination of a button and a popup menu Searchable JList, JTree, JComboBox and JTable - type in any text to quickly find matching rows, tree nodes, or table cells SearchableBar - as seen in Mozilla Firefox ResizablePanel, ResizableWindow and undecorated ResizableDialog FolderChooser - allows you to choose a folder RangeSlider - a slider which allows you to select two values to form a range JideScrollPane - column and row footer support for JScrollPane SimpleScrollPane - a scroll pane having four scroll buttons on the four sides. Overlayable - to put a component on top of another component at a specified location in order to provide a hint about how to use a component, to provide a progress indicator or to provide a status indicator beside a component without affecting the existing layout. AutoResizingTextArea - a text area that can automatically resize its height to fit in the content. StyledLabel - A JLabel that support different fonts, colors, and decorative lines. CheckBoxList and CheckBoxTree - use check boxes inside JLists and JTrees. Calculator Component DateSpinner and PointSpinner Popup - support any popup window AutoCompletion and IntelliHints StandardDialog - built on top of JDialog to support common used dialog standards as well as adding missing standard features of any dialogs. ButtonPanel - arrange buttons in different layouts with different gaps based on OS conventions Pre-built panels such as BannerPanel AbstractPage - lazy loading panel with page events (open, closing, closed, etc.), an ideal panel for building dialogs 工具类 IconFactory - simplify and unify the usage of icons across the whole application SystemInfo - a utility class which can be used to retrieve information about the current system, including OS name and version, JDK version requirement, etc. A fast gradient paint method in JideSwingUtilities. By leveraging DirectDraw, the fast gradient paint is 2 to 40 times faster than normal GradientPaint.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧