From: http://dev.21tx.com/2005/01/18/14251.Html
//轉載加注:datawindow經過我三年的使用,是如此方便快捷。雖然powerj不在使用,但現在pb11和datawindow.net再顯風光。datawindow以控件的面目出現在.Net裡,可以說真是無處不在。如此簡單好用的東西很多人不用,上次我一個朋友居然試圖給一個同學提供Delphi版的report tool for PB,讓我"痛斥"了一番。歸結其原因,還是Sybase沒宣傳好。可以說任何程序,特別是Java這樣的不長於UI編寫的語言,在jBuilder和datawindow的作用下,還是很容易寫一個界面和數據操作的。
*/////////////////////////////////////////////////////////////////////////
*
* This is a basic Java datawindow example.
* I want explaine you how to use a datawindow control for Java development.
* (its so basic...)
*
* Autor:
* David Arcia 09-09-2002 (david.arcia@softhome.Net)
*
//////////////////////////////////////////////////////////////////////////*/
import Javax.Swing.JOptionPane;
import Javax.swing.JFrame;
import powersoft.datawindow.JDataWindowControl;
import powersoft.datawindow.Blob;
import powersoft.powerj.db.Java_sql.Transaction;
public class JDataWindow extends JFrame{
//The datawindow
private JDataWindowControl dwcActual;
//The PowerBuilder library path (where dataobjects are stored)
private final String LIBRERIA = new String("C:\PB7\Java.pbl");
//Transaction objetc for database connection
private Transaction trans;
//Contructor
public JDataWindow() {
//New datawindow control
dwcActual = getDataWindow("dw_products",true,true,true);
//Not null ?
if(dwcActual == null) return;
}//ends method
/********************************************************************************
* CONNECTION USING POWERSOFT TRANSACTION OBJECT (as SQLCA in PowerBuilder)
r /> ********************************************************************************/
//This method connect with database (by example, a Oracle database)
public boolean setConnect(){
trans = new Transaction();
trans.reGISterDriver( "Oracle.JDBC.driver.OracleDriver" );
trans.setDataSource("jdbc:Oracle:thin:@192.168.22.10:1521:FALCON");
trans.setUserID( "rjimenez" );
trans.setPassWord( "defalcon" );
//Error ?
if(!trans.connect()){
System.err.println("Connection failed.");
return false;
}
return true;
}//ends method
/********************************************************************************
* Java DATAWINDOW'S CREATION
*************************************
*******************************************/
//Create a datawindow
public JDataWindowControl getDataWindow(String dataobject){
JDataWindowControl dwc = new JDataWindowControl();
//Assign a datawindow library
dwc.setSourceFileName(LIBRERIA);
//Assign a datawindow object to the dw control
dwc.setDataWindowObjectName(dataobject);
//Some propertIEs...
dwc.setVScroll( true );
dwc.insertRow(0);
//Assign the transaction object to dw
dwc.setTransaction(trans);
//return object created
return dwc;
}//ends method
//Optional...Method for row selection
public void selectRow(int row){
if(row > 0){
dwcActual.selectRow(0,false);
dwcActual.selectRow(row,true);
dwcActual.scrollToRow(row);
dwcActual.setRow(row);
}
}//ends method
//Optional... for to make a datawindow editable or not
public void setEditable(JDataWindowControl dwc, boolean editar){
//Accept text
dwcActual.acceptText();
//get column number
int cols = Integer.parseInt(dwc.describe("Datawindow.column.count"));
//////////////////////////////////////////////////////////////////////////
String indicador = (editar) ? "1" : "0";
//////////////////////////////////////////////////////////////////////////
editable = indicador == "1";
//Change the editable p
for(int cont=1; cont <= cols; cont++){
dwc.modify("#" + cont + ".TabSequence = " + indicador) ;
}
}//ends method
//Optional... Insert new row to dataWindows end.
public void getNewRow(){
int row=dwcActual.insertRow(0);
selectRow(row);
}//final de metodo
//Optional... Delete a datawindow row
public void deleteRow(){
int boton=JOptionPane.showConfirmDialog(null,"Delete actual row ?", "Deleting",
JOptionPane.YES_NO_OPTION);
if(boton == 0) dwcActual.deleteRow(dwcActual.getRow());
}//Fin de metodo
/********************************************************************************
* THIS ARE THE DATAWINDOW'S EVENT MANAGERS
*
* The events that support datawindow are clasificated in differents interfaces
* according it function.
*
********************************************************************************
Interfaces:
MouseListener,FocusListener,DatabaseListener,EditChangedListener,
ItemListener,PrintListener,RowChangeListener, etc...
Datawindow events:
public void leftButtonDoubleClick (MouseEvent event){}
public void leftButtonClick (MouseEvent event){}
public void leftButtonDown ( MouseEvent event){}
public void leftButtonUp ( MouseEvent event){}
public void middleButtonClick ( MouseEvent event){}
public void middleButtonDoubleClick ( MouseEvent event){}
public void mouseMove ( MouseEvent event){}
public void rightButtonClick ( MouseEvent event){}
public void rightButtonDoubleClick ( MouseEvent event){}
public void rightButtonDown ( MouseEvent event){}
public void rightButtonUp ( MouseEvent event){}
public void getFocus ( FocusEvent event){}
public void loseFocus ( FocusEvent event){}
public void DBError ( DatabaseEvent event){}