社区
Java EE
帖子详情
高分求教:关于JTextField和JTable控件的两个问题。
jiaguanxin
2004-12-25 10:18:51
问题如下:
1、请问JTextField怎样实现数据格式的控制?例如输入日期、两位小数的浮点数等格式的数据。
2、JTable中的数据怎样实现只读?即允许鼠标选择数据的同时不允许用户修改其中的数据。
另:我用Java用的好累,感觉控件和.NET差别好大呀,而且关于控件的说明还特别难找,JBuilder的帮助也都语焉不详,太痛苦了。各位大大有没有感觉比较好的参考书,帮忙推荐一下,谢谢了。
...全文
96
4
打赏
收藏
高分求教:关于JTextField和JTable控件的两个问题。
问题如下: 1、请问JTextField怎样实现数据格式的控制?例如输入日期、两位小数的浮点数等格式的数据。 2、JTable中的数据怎样实现只读?即允许鼠标选择数据的同时不允许用户修改其中的数据。 另:我用Java用的好累,感觉控件和.NET差别好大呀,而且关于控件的说明还特别难找,JBuilder的帮助也都语焉不详,太痛苦了。各位大大有没有感觉比较好的参考书,帮忙推荐一下,谢谢了。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tomcatjava
2004-12-26
打赏
举报
回复
另外还有一个高手写的,是输入IP的JTextField:
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.UIManager;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
public class JIPv4TextField extends JTextField {
JNumberField ip1 = new JNumberField(0, 3, 0, 255, true);
JNumberField ip2 = new JNumberField(0, 3, 0, 255, true);
JNumberField ip3 = new JNumberField(0, 3, 0, 255, true);
JNumberField ip4 = new JNumberField(0, 3, 0, 255, true);
public JIPv4TextField() {
this( "0.0.0.0" );
}
public JIPv4TextField( String strIpAddress ) {
setPreferredSize( new Dimension(250, 25) );
this.setLayout( new GridLayout(1, 9, 0, 0) );
ip1.setBorder(null);
ip2.setBorder(null);
ip3.setBorder(null);
ip4.setBorder(null);
this.add( createDot("") );
this.add( ip1 );
this.add( createDot(".") );
this.add( ip2 );
this.add( createDot(".") );
this.add( ip3 );
this.add( createDot(".") );
this.add( ip4 );
this.add( createDot("") );
this.setFocusable( false );
setIpAddress( strIpAddress );
}
private JLabel createDot( String dot ) {
JLabel lb = new JLabel( dot );
lb.setOpaque(false);
return lb;
}
/**
* 设置IP地址
* @param strIpAddress String
*/
public void setIpAddress(String strIpAddress) {
if(strIpAddress != null&&strIpAddress.equals("")){
ip1.setText("");
ip2.setText("");
ip3.setText("");
ip4.setText("");
}
else {
if (strIpAddress == null || (strIpAddress.indexOf(".") == -1)
|| (strIpAddress.split("\\.").length != 4)) {
throw new UnsupportedOperationException("Invalid IP Address:" +
strIpAddress);
}
String strIp[] = strIpAddress.split("\\.");
ip1.setText(strIp[0]);
ip2.setText(strIp[1]);
ip3.setText(strIp[2]);
ip4.setText(strIp[3]);
}
}
/**
* 取得IP地址
* @return String
*/
public String getIpAddress() {
String strIp1 = ip1.getText().trim();
String strIp2 = ip2.getText().trim();
String strIp3 = ip3.getText().trim();
String strIp4 = ip4.getText().trim();
return (strIp1.equals("") ? "0" : strIp1) + "." +
(strIp2.equals("") ? "0" : strIp2) + "." +
(strIp3.equals("") ? "0" : strIp3) + "." +
(strIp4.equals("") ? "0" : strIp4);
}
public String getText() {
return getIpAddress();
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
}
JFrame frame = new JFrame();
//EXIT_ON_CLOSE == 3
frame.setDefaultCloseOperation(3);
frame.setTitle("JIPAddressField Demo");
frame.getContentPane().setLayout( new FlowLayout() );
frame.getContentPane().add( new JIPv4TextField() );
frame.getContentPane().add( new JIPv4TextField("255.255.255.255") );
JIPv4TextField ip = new JIPv4TextField();
ip.setIpAddress("192.168.0.122");
frame.getContentPane().add(ip);
System.err.println( new JIPv4TextField().getIpAddress() );
frame.setSize(400, 320);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation( (d.width - frame.getSize().width) / 2,
(d.height - frame.getSize().height) / 2);
frame.setVisible(true);
}
}
tomcatjava
2004-12-26
打赏
举报
回复
关于第一个问题,给你个例子,是只接受数字的JTextField:
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
public class JNumberField extends JTextField
{
private numDoc doc = null;
public JNumberField()
{
super(3);
setDocument( doc = new numDoc());
}
public JNumberField(int maxLen)
{
super();
setDocument( doc = new numDoc(maxLen));
}
public void setMaxLen( int maxLen ) {
doc.setMaxLen( maxLen );
}
public int getMaxLen() {
return doc.getMaxLen();
}
public static void main( String args[] ) {
JFrame f = new JFrame("Only input number characters" );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
Container c = f.getContentPane();
JNumberField test;
c.add( test = new JNumberField(),BorderLayout.NORTH );
c.add( new JNumberField(),BorderLayout.CENTER );
c.add( new JNumberField( 10 ),BorderLayout.SOUTH );
test.setMaxLen( 5 );
f.pack();
f.show();
}
}
class numDoc extends PlainDocument
{
int maxLength = 3;
public numDoc(){}
public numDoc(int maxLen)
{
maxLength = maxLen;
}
public void setMaxLen( int maxLength ) {
this.maxLength = maxLength;
}
public int getMaxLen() {
return maxLength;
}
//在这里可以修改符合你的条件,如解析字符串为日期进行判断等。
public void insertString( int offset,String s,AttributeSet a ) throws BadLocationException
{
int len = getLength();
String str =getText(0,len);
if ( (str+s).length() > maxLength
|| ( str.trim().equals("0") && !s.substring(0,1).equals(".") && offset != 0 )
)
{
Toolkit.getDefaultToolkit().beep();
return;
}
try
{
Integer.parseInt( str+s );
}
catch ( Exception e )
{
Toolkit.getDefaultToolkit().beep();
return;
}
super.insertString(offset,s,a);
}
}
sqlink
2004-12-26
打赏
举报
回复
我回答你第二个问题先,
如果你想table不能修改又不能选择,只要设成setEnable(false)就可以了,
如果你要table不能修改但能选择,要稍微麻烦点,implement TableModel把isCellEditable的return弄成false,或直接extend AbstractTableModel,本来就已经是false了
jiaguanxin
2004-12-26
打赏
举报
回复
没人理我吗?救救我吧!谢谢
JavaSwing图形界面开发与案例详解和实例代码
[Java Swing图形界面开发与案例详解].王鹏等.扫描版.pdf 《JavaSwing图形界面开发与案例详解》实例代码.rar
JTable
单元格放自定义
控件
(一)-如何在
JTable
的单元格放JPanel
原文链接:http://blog.sina.com.cn/s/blog_7f1c8c710101hdpf.html 最近自己尝试着模仿着实现一款非常有名的进销库存管理系统(智慧记)里面的一个功能。功能如下下图所示。
JTable
tableA的第一列(品名规格)放的是自定义JPanel
控件
,JPanel上面放的是
JTextfield
和JButton,点击每一行第一列的JButton会弹出弹出一个J...
Java:(
JTextField
) 和(JTextArea)
1.文本输入框包括两种,单行文本输入框 (
JTextField
) 和多行文本输入框 (JTextArea)。 2.(
JTextField
): 允许用户在文本框中输入、编辑单行文本。 3.(
JTextField
)的几种常见用法: (1)SetText(string):设置文本框中的文本值。 (2)GetText():返回文本域中的输入文本值。 (3)getColumns():返回文本域的列数。 (4)setEditable(Boolean):设置文本域是否为只读状态。 4.(
JTextField
): 一个显示
038-
JTable
控件
应用案例讲解
JTable
控件
作用: 1、表格由一个表格头部(列头部),表格列和单元值组成。 2、表格单元值由实现TableCellRender接口的对象绘制,并由实现了CellEditor接口的对象进行编辑。 3、表格支持很多选取模式,包括行、列和单元选取。 4、表格单独在swing.table包中有接口和类。 5、只有放在滚动窗格中的表格才会显示表格头部。
关于
JTable
单元格自定义
控件
的简单示例
不想多说什么相关的知识,我说不清也不想抄书,如果想明明白白的知道的话可以去翻书,只是现在Swing的相关的教程实在不多,我也是只是略懂些皮毛,为了便于以后自己翻阅便动手写了一个简单的程序,先看截图
JTable
的单元有观看模式和编辑模式
两个
种,默认情况下双击表格中的某一单元格便能进入编辑模式,此时可以对单元格内的内容进行编辑,但默认情况下并没有提供保存的功能。
现在演示的这个表格中“编号”一栏是只读,即你不能编辑,而且在未选中时背景色为黄色。
Java EE
67,543
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章