我创建了一个将数据加载到a中的函数JTable.一切正常,但该表中的所有单元格都是可编辑的.顺便说一句,我用defaultTableModel的是桌子模型.我在Netbeans IDE中这样做.请帮忙.这是我的代码:
private void updateTable(String searchText){
if(searchText != null)
this._sqlCmd = this._sqlCmd + " WHERE "+columnCombo.getSelectedItem()+" LIKE '%"+searchText+"%'";
jTable1.setSurrendersFocusOnKeystroke(true);
table = (javax.swing.table.DefaultTableModel) jTable1.getModel();
try{
table.setRowCount(0);
}catch(Exception e){}
try {
ResultSet rs = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY).executeQuery(_sqlCmd);
while (rs.next()){
Object[] data = new Object[numOfCols];
for(int i=0; i<data.length; i++){
data[i] = rs.getObject(i+1);
}
table.addRow(data);
}
table.fireTableDataChanged();
} catch (SQLException ex) {
Logger.getLogger(FindContactGrid.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud) 我有这个代码
import com.crystaldecisions.reports.sdk.ReportClientDocument;
...
ReportClientDocument rpt = new ReportClientDocument();
rpt.open(reportPath+fileName, 0);
rpt.getDatabaseController().logon(DBConnect.getUsername(), DBConnect.getPassword());
Tables tables = rpt.getDatabaseController().getDatabase().getTables();
for(int i=0; i< tables.size(); i++){
System.out.print(i);
ITable table = tables.getTable(i);
IConnectionInfo connInfo = table.getConnectionInfo();
PropertyBag innerProp = connInfo.getAttributes();
innerProp.clear();
PropertyBag propertyBag = new PropertyBag();
propertyBag.put("Server Type", "JDBC (JNDI)");
propertyBag.put("Database DLL", "crdb_jdbc.dll");
propertyBag.put("Connection String", DBConnect.getConnectionString());
propertyBag.put("Database Class Name", "com.mysql.jdbc.Driver");
propertyBag.put("Use JDBC", "true");
propertyBag.put("Server Name", DBConnect.getServer());
propertyBag.put("Generic JDBC Driver Behavior", "No");
propertyBag.put("URI", "!com.mysql.jdbc.Driver!jdbc:mysql://"+DBConnect.getServer()+":"+DBConnect.getPort()+"/"+DBConnect.getDatabase()+"!ServerType=29!QuoteChar=`");
connInfo.setAttributes(propertyBag);
connInfo.setKind(ConnectionInfoKind.SQL);
table.setConnectionInfo(connInfo);
rpt.getDatabaseController().setTableLocation(table, tables.getTable(i));
Run Code Online (Sandbox Code Playgroud)
我想要做的是打开一个报告并将连接信息传递给该报告,以便我可以动态更改报告的数据库,但由于某种原因它不起作用,报告仍然从数据库中生成信息,它是最初成立.有人可以告诉我我做错了什么吗?这是一个摇摆应用程序,我正在使用水晶报告XI.顺便说一句我使用com.crystaldecisions.reports.sdk.ReportClientDocument而不是com.crystaldecisions.sdk.occa.report.application.ReportClientDocument因为当我使用另一个时,我得到一个找不到服务器错误.请帮忙.
我在我的主类中有这个类,在我的jTabbedPane上放一个关闭按钮.问题是,例如我打开了三个选项卡:选项卡日记,联系人和上传,选项卡联系人是当前选定的选项卡.当我尝试关闭不是所选选项卡的日志选项卡时,关闭的选项卡是当前选定的选项卡.
class Tab extends javax.swing.JPanel implements java.awt.event.ActionListener{
@SuppressWarnings("LeakingThisInConstructor")
public Tab(String label){
super(new java.awt.BorderLayout());
((java.awt.BorderLayout)this.getLayout()).setHgap(5);
add(new javax.swing.JLabel(label), java.awt.BorderLayout.WEST);
ImageIcon img = new ImageIcon(getClass().getResource("/timsoftware/images/close.png"));
javax.swing.JButton closeTab = new javax.swing.JButton(img);
closeTab.addActionListener(this);
closeTab.setMargin(new java.awt.Insets(0,0,0,0));
closeTab.setBorder(null);
closeTab.setBorderPainted(false);
add(closeTab, java.awt.BorderLayout.EAST);
}
@Override
public void actionPerformed(ActionEvent e) {
closeTab(); //function which closes the tab
}
}
private void closeTab(){
menuTabbedPane.remove(menuTabbedPane.getSelectedComponent());
}
Run Code Online (Sandbox Code Playgroud)
这就是我调用选项卡的方法:
menuTabbedPane.setTabComponentAt(menuTabbedPane.indexOfComponent(jvPanel), new Tab("contactPanel"));
Run Code Online (Sandbox Code Playgroud) 有人可以帮助我如何设置JTextField运行时的宽度?我希望我的文本字段在运行时调整大小.它会询问用户的长度,然后输入将改变文本字段的宽度.
if(selectedComponent instanceof javax.swing.JTextField){
javax.swing.JTextField txtField = (javax.swing.JTextField) selectedComponent;
//txtField.setColumns(numInput); //tried this but it doesn't work
//txtField.setPreferredSize(new Dimension(numInput, txtField.getHeight())); //also this
//txtField.setBounds(txtField.getX(), txtField.getY(), numInput, txtField.getHeight());
//and this
txtField.revalidate();
}
Run Code Online (Sandbox Code Playgroud)
我正在使用null布局,因为我正处于编辑模式.
我有一个带有多个jtextfield的swing应用程序.如何替换回车键的功能,当按下回车键时,它将像标签键一样转移到下一个可聚焦组件?我不想在每个jtextfield上放置一个keylistener.
我将项目的LAF设置为System默认外观.现在我正在尝试将JDesktopPane放在我的一个面板中,但我希望所有内部框架都使用java默认的LAF.有没有办法在不改变整个项目的LAF的情况下改变它?
有没有办法在java swing上创建下载按钮?我尝试在互联网上搜索答案,但我只获得了如何在jsp/servlet上创建下载链接的链接
我想在javascript中评估一个字符串.我想要评估的字符串是类的实例化:
var frm = eval("new MyDesktop.Modules."
+ record.data.js
+ ".Client."
+ record.data.js + "();")
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我创建了一个加载JR报告的程序。我在报表上放置了一个参数,以便无论何时加载报表,它都会要求一个值。当我在Java程序上传递参数时,它工作正常
Map parameters = new HashMap();
parameters.put("VoucherNo", oclsJVHeader.getJournalVoucherNo());
...
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试不带参数加载它时,
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, conn);
Run Code Online (Sandbox Code Playgroud)
它说“该文档没有页面”。我一直在想,因为只要我的代码未传递参数,我都会使该参数使用提示符,因此在加载该参数时会询问提示符。
<parameter name="VoucherNo" class="java.lang.String" isForPrompting="true">
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,每当不传递参数时,如何使报告提示输入值?我是否需要为此更改Java代码?
顺便说一下,这是我用于加载报告的代码:
FileInputStream fs = new FileInputStream(reportPath+reportFile);
JasperDesign jasperDesign = JRXmlLoader.load(fs);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn); //could be null or parameters
JFrame jframe = new JFrame("Journal Voucher");
jframe.getContentPane().add(new JRViewer(jasperPrint));
jframe.pack();
jframe.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);
jframe.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
我正在为项目使用iReport和NetBeans。
我想在日期上加1个月,但问题是当我有2月28日的日期然后我再添加一个月,我的结果是3月28日.它应该在3月31日结束.当我开始4月的日期时30,我应该在5月31日而不是5月30日结束.我尝试使用Jodatime的plusMonths()和java.util.date的add()但仍然是同样的问题.
如何使用不同的按钮或组件打开文件字段的文件选择对话框?我尝试在互联网上搜索,但找不到解决方案。我想要做的是在单击面板时打开文件选择对话框。
java ×9
swing ×7
extjs4 ×2
javascript ×2
calendar ×1
class ×1
download ×1
extjs ×1
extjs4.1 ×1
ireport ×1
jdesktoppane ×1
jodatime ×1
jtabbedpane ×1
jtable ×1
jtextfield ×1
keylistener ×1
netbeans ×1
report ×1
runtime ×1