小编Joh*_*ohn的帖子

如何使jtable在java中不可编辑?

我创建了一个将数据加载到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)

java swing netbeans jtable

10
推荐指数
2
解决办法
4万
查看次数

如何在java swing应用程序中打开crystal报表?

我有这个代码

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因为当我使用另一个时,我得到一个找不到服务器错误.请帮忙.

java swing crystal-reports crystal-reports-xi

5
推荐指数
1
解决办法
7580
查看次数

关闭单击的选项卡,而不是当前选定的选项卡JTabbedPane

我在我的主类中有这个类,在我的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)

java swing actionlistener jtabbedpane

3
推荐指数
1
解决办法
1892
查看次数

如何在运行时设置JTextField的宽度?

有人可以帮助我如何设置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布局,因为我正处于编辑模式.

java swing runtime jtextfield

3
推荐指数
1
解决办法
5208
查看次数

如何捕获Enter键并将事件更改为Java中的Tab

我有一个带有多个jtextfield的swing应用程序.如何替换回车键的功能,当按下回车键时,它将像标签键一样转移到下一个可聚焦组件?我不想在每个jtextfield上放置一个keylistener.

java swing keylistener

2
推荐指数
1
解决办法
1561
查看次数

如何更改JDesktopPane的外观?

我将项目的LAF设置为System默认外观.现在我正在尝试将JDesktopPane放在我的一个面板中,但我希望所有内部框架都使用java默认的LAF.有没有办法在不改变整个项目的LAF的情况下改变它?

java user-interface swing look-and-feel jdesktoppane

2
推荐指数
1
解决办法
3468
查看次数

如何在java swing中创建下载按钮/链接?

有没有办法在java swing上创建下载按钮?我尝试在互联网上搜索答案,但我只获得了如何在jsp/servlet上创建下载链接的链接

java swing download

1
推荐指数
1
解决办法
4454
查看次数

在javascript中评估实例化

我想在javascript中评估一个字符串.我想要评估的字符串是类的实例化:

var frm = eval("new MyDesktop.Modules." 
    + record.data.js 
    + ".Client." 
    +  record.data.js + "();")
Run Code Online (Sandbox Code Playgroud)

这可能吗?

javascript class extjs4

1
推荐指数
1
解决办法
35
查看次数

如何使JasperReports在程序加载时要求一个参数?

我创建了一个加载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)

我正在为项目使用iReportNetBeans

java report jasper-reports ireport

0
推荐指数
1
解决办法
3701
查看次数

将截至2月28日的1个月添加到3月31日

我想在日期上加1个月,但问题是当我有2月28日的日期然后我再添加一个月,我的结果是3月28日.它应该在3月31日结束.当我开始4月的日期时30,我应该在5月31日而不是5月30日结束.我尝试使用Jodatime的plusMonths()和java.util.date的add()但仍然是同样的问题.

java calendar jodatime gregorian-calendar

0
推荐指数
1
解决办法
1327
查看次数

单击不同按钮 extjs4.1 时触发文件选择

如何使用不同的按钮或组件打开文件字段的文件选择对话框?我尝试在互联网上搜索,但找不到解决方案。我想要做的是在单击面板时打开文件选择对话框。

javascript extjs extjs4 extjs4.1

0
推荐指数
1
解决办法
5143
查看次数