変数宣言の強制Option Explicit
配列インデックスの下限値を指定Option Base [01]
デフォルトは1
文字列比較の優先順位を指定Option Compare [TextBinary]
デフォルトはBinaryBinary A < B < E < Z < a < b < e < z
Text (A=a) < (B=b) < (E=e) < (Z=z)
土曜日, 4月 14, 2007
金曜日, 4月 13, 2007
[VB.NET]CheckedListBox
Public Sub setCheckedListBoxSelected(ByRef oCListBox As CheckedListBox)
Dim value As Boolean = oCListBox.GetItemChecked(oCListBox.SelectedIndex) 'oCListBox.SetItemChecked(oCListBox.SelectedIndex, CBool(IIf(value.Equals(True), False, True))) oCListBox.SetItemCheckState(oCListBox.SelectedIndex, CType(IIf(value.Equals(True), CheckState.Unchecked, CheckState.Checked), System.Windows.Forms.CheckState)) If (oCListBox.SelectedIndex >= 0) Then oCListBox.SetSelected(oCListBox.SelectedIndex, False) oCListBox.Show()
End Sub
Dim value As Boolean = oCListBox.GetItemChecked(oCListBox.SelectedIndex) 'oCListBox.SetItemChecked(oCListBox.SelectedIndex, CBool(IIf(value.Equals(True), False, True))) oCListBox.SetItemCheckState(oCListBox.SelectedIndex, CType(IIf(value.Equals(True), CheckState.Unchecked, CheckState.Checked), System.Windows.Forms.CheckState)) If (oCListBox.SelectedIndex >= 0) Then oCListBox.SetSelected(oCListBox.SelectedIndex, False) oCListBox.Show()
End Sub
気になる記事
http://itpro.nikkeibp.co.jp/article/COLUMN/20070410/267878/?ST=biz_shinzui
バグの発生率を示す数式があるという話だった。開発工数や進捗の度合い、プログラムの本数などに基づき、ある数式で計算するとバグの発生率が算出でき、実際に発生するバグとの誤差は5%の範囲に収まるという。
プログラムの品質は、作成に時間がかかった部分があまり高くない
バグの発生率を示す数式があるという話だった。開発工数や進捗の度合い、プログラムの本数などに基づき、ある数式で計算するとバグの発生率が算出でき、実際に発生するバグとの誤差は5%の範囲に収まるという。
プログラムの品質は、作成に時間がかかった部分があまり高くない
火曜日, 4月 10, 2007
[VB.NET]Option Strict OnとOffの比較(OO4O接続)
■OO4Oを使用したデータベース接続方法でOption StrictをOnにした時とOffにした時での
比較をしてみる。
Option StrictをOffにしたとき
Dim oraDb As OracleInProcServer.OraDatabase
Dim oraDynaset As OracleInProcServer.OraDynaset
Dim fieldValue as Integer
oraDynaset = oraDb.CreateDynaset("select * from table", 0&)
If oraDynaset.RecordCount > 0 Then
fieldValue = oraDynaset.Fields("FIELDNAME").Value
End If
Option StrictをONにすると次のようになる。
Dim oraDb As OracleInProcServer.OraDatabase
Dim oraDynaset As OracleInProcServer.OraDynaset
Dim fieldValue as Integer
oraDynaset = CType(oraDb.CreateDynaset("select * from table", 0&), OracleInProcServer.OraDynaset)
If oraDynaset.RecordCount > 0 Then
fieldValue = CInt(DirectCast(DirectCast(oraDynaset.Fields, OracleInProcServer.OraFields)("FIELDNAME"), _ OracleInProcServer.OraField).Value)
End If
比較してみるとOption StrictはOffにした方が良さそうである。(^^)v
■参考サイト
KEN's .NET [特集4] Option Strict Onのススメ
http://www5b.biglobe.ne.jp/~yone-ken/VBNET/special/sp04_OptionStrictOn.html
比較をしてみる。
Option StrictをOffにしたとき
Dim oraDb As OracleInProcServer.OraDatabase
Dim oraDynaset As OracleInProcServer.OraDynaset
Dim fieldValue as Integer
oraDynaset = oraDb.CreateDynaset("select * from table", 0&)
If oraDynaset.RecordCount > 0 Then
fieldValue = oraDynaset.Fields("FIELDNAME").Value
End If
Option StrictをONにすると次のようになる。
Dim oraDb As OracleInProcServer.OraDatabase
Dim oraDynaset As OracleInProcServer.OraDynaset
Dim fieldValue as Integer
oraDynaset = CType(oraDb.CreateDynaset("select * from table", 0&), OracleInProcServer.OraDynaset)
If oraDynaset.RecordCount > 0 Then
fieldValue = CInt(DirectCast(DirectCast(oraDynaset.Fields, OracleInProcServer.OraFields)("FIELDNAME"), _ OracleInProcServer.OraField).Value)
End If
比較してみるとOption StrictはOffにした方が良さそうである。(^^)v
■参考サイト
KEN's .NET [特集4] Option Strict Onのススメ
http://www5b.biglobe.ne.jp/~yone-ken/VBNET/special/sp04_OptionStrictOn.html
土曜日, 4月 07, 2007
[VB.NET]メモ
メンバ=定数=等価なキャラクタ文字:説明
CrLf=vbCrLf=Chr(13) + Chr(10):キャリッジ リターン文字とライン フィード文字の組み合わせ。
Cr=vbCr=Chr(13):キャリッジ リターン文字。
Lf=vbLf=Chr(10):ライン フィード文字。
NewLine=vbNewLine=Chr(13) + Chr(10):改行文字。
Tab=vbTab=Chr(9):タブ文字。
Option Strict Onの時、以下の項目が禁止され、ビルド時にエラーになる。
・明示的なキャスト演算子を使用しない縮小変換
・遅延バインディング
・Object 型での=、<>、TypeOf~Is~、およびIs以外の演算
・宣言でのAs句の省略
■関連サイト
http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_13/vbnet2_13_01.html
CrLf=vbCrLf=Chr(13) + Chr(10):キャリッジ リターン文字とライン フィード文字の組み合わせ。
Cr=vbCr=Chr(13):キャリッジ リターン文字。
Lf=vbLf=Chr(10):ライン フィード文字。
NewLine=vbNewLine=Chr(13) + Chr(10):改行文字。
Tab=vbTab=Chr(9):タブ文字。
Option Strict Onの時、以下の項目が禁止され、ビルド時にエラーになる。
・明示的なキャスト演算子を使用しない縮小変換
・遅延バインディング
・Object 型での=、<>、TypeOf~Is~、およびIs以外の演算
・宣言でのAs句の省略
■関連サイト
http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_13/vbnet2_13_01.html
土曜日, 3月 03, 2007
[Java]SQL関連
▼質問
NUMBER型のフィールドにnullを指定するにはどうすればいいの?
▼回答
setStringメソッドでnullを指定するか、setNullメソッドでTypes.NUMERIC を指定すればできるよ。
PreparedStatement pstmt = null;
pstmt.setString( parameterIndex, null );
pstmt.setNull( parameterIndex, Types.NUMERIC );
NUMBER型のフィールドにnullを指定するにはどうすればいいの?
▼回答
setStringメソッドでnullを指定するか、setNullメソッドでTypes.NUMERIC を指定すればできるよ。
PreparedStatement pstmt = null;
pstmt.setString( parameterIndex, null );
pstmt.setNull( parameterIndex, Types.NUMERIC );
金曜日, 2月 16, 2007
[Java]ポップアップメニュー(JPopupMenu)
▼質問
ポップアップメニューを、タイトル名と選択メニューの間にセパレーターを挟んだ感じで表示したいんだ。
どうしたらいいんだ?
▼回答
サンプルだよ!参考にしてくれ!!表示したいコンポーネントのマウスクリックイベントに追加すれば
右クリックで表示されるよ。
if ( javax.swing.SwingUtilities.isRightMouseButton(e) ) {
// 右クリック時の処理
JPopupMenu popupMenu = new JPopupMenu();
JLabel label = new JLabel( "タイトル");
label.setAlignmentX( JPopupMenu.CENTER_ALIGNMENT );
label.setHorizontalAlignment( JLabel.CENTER );
label.setFont( new java.awt.Font( "Monospaced", java.awt.Font.BOLD, 14 ) );
popupMenu.add( label );
JSeparator[] separator = new JSeparator[2];
for ( int i = 0 ; i < separator.length ; i++ ) {
separator[i] = new JSeparator( SwingConstants.HORIZONTAL );
popupMenu.add( separator[i] );
}
JMenuItem menuItem = new JMenuItem( "選択メニュー" );
menuItem.setHorizontalAlignment( JLabel.LEFT );
menuItem.setFont( new java.awt.Font( "Monospaced", java.awt.Font.PLAIN, 12 ) );
menuItem.setActionCommand( "選択メニュー" );
popupMenu.add( menuItem );
menuItem.addMouseListener( new java.awt.event.MouseAdapter() {
public void mouseClicked( java.awt.event.MouseEvent evt ) {
// マウスがクリックされたときのイベント処理
}
});
menuItem.addMouseListener( new java.awt.event.MouseAdapter() {
public void mousePressed( java.awt.event.MouseEvent evt ) {
// コンポーネント上でマウスボタンが押されると呼ばれるイベント処理
}
});
menuItem.addMouseListener( new java.awt.event.MouseAdapter() {
public void mouseReleased( java.awt.event.MouseEvent evt ) {
// コンポーネント上でマウスボタンが放されると呼ばれるイベント処理
}
});
if ( e.isPopupTrigger() ) {
popupMenu.show( e.getComponent(), e.getX(), e.getY() );
}
} else if( javax.swing.SwingUtilities.isMiddleMouseButton(e) ) {
// 中ボタンクリック時の処理
} else if( javax.swing.SwingUtilities.isLeftMouseButton(e) ) {
// 左クリック時の処理
}
ポップアップメニューを、タイトル名と選択メニューの間にセパレーターを挟んだ感じで表示したいんだ。
どうしたらいいんだ?
▼回答
サンプルだよ!参考にしてくれ!!表示したいコンポーネントのマウスクリックイベントに追加すれば
右クリックで表示されるよ。
if ( javax.swing.SwingUtilities.isRightMouseButton(e) ) {
// 右クリック時の処理
JPopupMenu popupMenu = new JPopupMenu();
JLabel label = new JLabel( "タイトル");
label.setAlignmentX( JPopupMenu.CENTER_ALIGNMENT );
label.setHorizontalAlignment( JLabel.CENTER );
label.setFont( new java.awt.Font( "Monospaced", java.awt.Font.BOLD, 14 ) );
popupMenu.add( label );
JSeparator[] separator = new JSeparator[2];
for ( int i = 0 ; i < separator.length ; i++ ) {
separator[i] = new JSeparator( SwingConstants.HORIZONTAL );
popupMenu.add( separator[i] );
}
JMenuItem menuItem = new JMenuItem( "選択メニュー" );
menuItem.setHorizontalAlignment( JLabel.LEFT );
menuItem.setFont( new java.awt.Font( "Monospaced", java.awt.Font.PLAIN, 12 ) );
menuItem.setActionCommand( "選択メニュー" );
popupMenu.add( menuItem );
menuItem.addMouseListener( new java.awt.event.MouseAdapter() {
public void mouseClicked( java.awt.event.MouseEvent evt ) {
// マウスがクリックされたときのイベント処理
}
});
menuItem.addMouseListener( new java.awt.event.MouseAdapter() {
public void mousePressed( java.awt.event.MouseEvent evt ) {
// コンポーネント上でマウスボタンが押されると呼ばれるイベント処理
}
});
menuItem.addMouseListener( new java.awt.event.MouseAdapter() {
public void mouseReleased( java.awt.event.MouseEvent evt ) {
// コンポーネント上でマウスボタンが放されると呼ばれるイベント処理
}
});
if ( e.isPopupTrigger() ) {
popupMenu.show( e.getComponent(), e.getX(), e.getY() );
}
} else if( javax.swing.SwingUtilities.isMiddleMouseButton(e) ) {
// 中ボタンクリック時の処理
} else if( javax.swing.SwingUtilities.isLeftMouseButton(e) ) {
// 左クリック時の処理
}
木曜日, 2月 15, 2007
[Java]コンポーネントの操作不可
■JButton
JButton.setEnabled( false );
■JTextField
JTextField.setEditable( false );
■JSpinner
((JSpinner.DefaultEditor)JSpinner.getEditor()).getTextField().setEditable( false );
JSpinner.getComponent(0).setEnabled( false );
JSpinner.getComponent(1).setEnabled( false );
イベント処理でチェックが必要!
JSpinner.getComponent(1).addMouseListener( new java.awt.event.MouseAdapter() {
public void mouseClicked( java.awt.event.MouseEvent evt ) {
if ( !evt.getComponent().isEnabled() ) return;
}
});
■JCheckBox
JCheckBox.setEnabled( false );
■JFormattedTextField
JFormattedTextField.setEditable( false );
JButton.setEnabled( false );
■JTextField
JTextField.setEditable( false );
■JSpinner
((JSpinner.DefaultEditor)JSpinner.getEditor()).getTextField().setEditable( false );
JSpinner.getComponent(0).setEnabled( false );
JSpinner.getComponent(1).setEnabled( false );
イベント処理でチェックが必要!
JSpinner.getComponent(1).addMouseListener( new java.awt.event.MouseAdapter() {
public void mouseClicked( java.awt.event.MouseEvent evt ) {
if ( !evt.getComponent().isEnabled() ) return;
}
});
■JCheckBox
JCheckBox.setEnabled( false );
■JFormattedTextField
JFormattedTextField.setEditable( false );
水曜日, 2月 07, 2007
[Java]ファイル入出力ストリーム関連
public int FileRead( String fname ) {
int ret = 0;
BufferedReader reader = null;
if ( fname == null ) return -1;
try {
reader = new BufferedReader( new FileReader( fname ) );
String line = null;
while ( (line = reader.readLine()) != null ) {
System.out.println( line );
ret++;
}
}
catch ( FileNotFoundException e ) {
System.out.println( "ファイルが見つかりません。" );
ret = -2;
}
catch ( IOException e ) {
System.out.println( "入出力エラーです。" );
ret = -3;
}
finally {
try {
if ( reader != null ) reader.close();
}
catch ( Exception e ) {}
}
return ret;
}
int ret = 0;
BufferedReader reader = null;
if ( fname == null ) return -1;
try {
reader = new BufferedReader( new FileReader( fname ) );
String line = null;
while ( (line = reader.readLine()) != null ) {
System.out.println( line );
ret++;
}
}
catch ( FileNotFoundException e ) {
System.out.println( "ファイルが見つかりません。" );
ret = -2;
}
catch ( IOException e ) {
System.out.println( "入出力エラーです。" );
ret = -3;
}
finally {
try {
if ( reader != null ) reader.close();
}
catch ( Exception e ) {}
}
return ret;
}
火曜日, 1月 16, 2007
[JavaScript]
currentElementNo = 0;
function nextElement( keyCode ) {
if (keyCode == 13) {
currentElementNo++;
currentElementNo %= document.formA.elements.length;
if ( document.formA.elements[currentElementNo].type != 'button') {
document.formA.elements[currentElementNo].focus();
} else {
currentElementNo++;
}
}
}
HTML部
'<'body onkeydown="nextElement(event.keyCode); return true;">
function nextElement( keyCode ) {
if (keyCode == 13) {
currentElementNo++;
currentElementNo %= document.formA.elements.length;
if ( document.formA.elements[currentElementNo].type != 'button') {
document.formA.elements[currentElementNo].focus();
} else {
currentElementNo++;
}
}
}
HTML部
'<'body onkeydown="nextElement(event.keyCode); return true;">
土曜日, 1月 13, 2007
[Java]メモ4
▼質問
splitメソッドでピリオドを指定すると配列が返ってこないんだ?どうやって指定すればいいの?!
ピリオドは、プログラムで重要な意味を持っているのはわかるんだが・・・。
String value = "1.2";
String[] splits = value.split( "." );
▼回答
¥マークを頭に二つ付ければよいようだ。
String value = "1.2";
String[] splits = value.split( "¥¥." );
■参考サイト
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19125&forum=12&3
▼質問
ラベルをボタンスタイルに表示することは可能なの?
▼回答
可能だよ!
setBorderメソッドを使えばボタンをしたラベルが作成できるんだ。
クリックされたイベントもaddMouseListenerで登録すればボタン(ラベル)がクリックした時の
処理もすることができるんだ。
下記のプログラムは、種別によってスタイルを変えたいときに使用できる.
ボタン(ラベル)の上にきた時に種別1で呼び出してボタンが選択された状態にするのに使用できる.
private void setLabelStyle( JLabel label, int kind ) {
if ( kind == 1 ) {
label.setBorder( new CompoundBorder( new LineBorder( Color.RED, 3 ),
new BevelBorder( BevelBorder.RAISED ) ) );
}
else {
label.setBorder( new CompoundBorder( new LineBorder( Color.BLACK, 2 ),
new BevelBorder( BevelBorder.RAISED ) ) );
}
}
▼質問
「-Infinity」って何だ?
▼回答
「Infinity」は、無限大という文字列らしい。
正の無限大は「Infinity」で、負の無限大は「-Infinity」となるらしい。
■参考サイト
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Double.html
splitメソッドでピリオドを指定すると配列が返ってこないんだ?どうやって指定すればいいの?!
ピリオドは、プログラムで重要な意味を持っているのはわかるんだが・・・。
String value = "1.2";
String[] splits = value.split( "." );
▼回答
¥マークを頭に二つ付ければよいようだ。
String value = "1.2";
String[] splits = value.split( "¥¥." );
■参考サイト
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19125&forum=12&3
▼質問
ラベルをボタンスタイルに表示することは可能なの?
▼回答
可能だよ!
setBorderメソッドを使えばボタンをしたラベルが作成できるんだ。
クリックされたイベントもaddMouseListenerで登録すればボタン(ラベル)がクリックした時の
処理もすることができるんだ。
下記のプログラムは、種別によってスタイルを変えたいときに使用できる.
ボタン(ラベル)の上にきた時に種別1で呼び出してボタンが選択された状態にするのに使用できる.
private void setLabelStyle( JLabel label, int kind ) {
if ( kind == 1 ) {
label.setBorder( new CompoundBorder( new LineBorder( Color.RED, 3 ),
new BevelBorder( BevelBorder.RAISED ) ) );
}
else {
label.setBorder( new CompoundBorder( new LineBorder( Color.BLACK, 2 ),
new BevelBorder( BevelBorder.RAISED ) ) );
}
}
▼質問
「-Infinity」って何だ?
▼回答
「Infinity」は、無限大という文字列らしい。
正の無限大は「Infinity」で、負の無限大は「-Infinity」となるらしい。
■参考サイト
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Double.html
土曜日, 12月 23, 2006
[Java]Collection
▼質問
Mapオブジェクトを復帰値として可変で返却しているんだ。それを連続で格納しているんだけど
うまくかないんだ?
▼回答
Mapは、keyとvalueを組にして要素として保持しているからだよ!
Mapは、要素の順番を保持しなかったり、同一keyの要素は複数保持できなかったりするから
使い方には気をつけたほうがいいぞ。
前回値をclearメソッドで削除していなかったのが原因だったみたい。
例1)
TestMap testMap = new TestMap();
Map map = testMap.getMap();
例2)
TestMap testMap = new TestMap();
Map map = new HashMap();
map.putAll( testMap.getMap() );
上の2つのやり方は同じ結果が得られる。
■参考サイト
http://www.atmarkit.co.jp/fjava/javatips/098java012.html
Mapオブジェクトを復帰値として可変で返却しているんだ。それを連続で格納しているんだけど
うまくかないんだ?
▼回答
Mapは、keyとvalueを組にして要素として保持しているからだよ!
Mapは、要素の順番を保持しなかったり、同一keyの要素は複数保持できなかったりするから
使い方には気をつけたほうがいいぞ。
前回値をclearメソッドで削除していなかったのが原因だったみたい。
例1)
TestMap testMap = new TestMap();
Map map = testMap.getMap();
例2)
TestMap testMap = new TestMap();
Map map = new HashMap();
map.putAll( testMap.getMap() );
上の2つのやり方は同じ結果が得られる。
■参考サイト
http://www.atmarkit.co.jp/fjava/javatips/098java012.html
土曜日, 12月 09, 2006
[Java]Look&Feel
// 外観を設定します
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (ClassNotFoundException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
} catch (InstantiationException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
// 外観を変更します
SwingUtilities.updateComponentTreeUI(this);
// サブコンポーネントの推奨サイズおよびレイアウトに合わせて
// この Window をサイズ変更するように設定
pack();
■参考サイト
http://www.hellohiro.com/swinglookandfeel.htm
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (ClassNotFoundException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
} catch (InstantiationException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
// 外観を変更します
SwingUtilities.updateComponentTreeUI(this);
// サブコンポーネントの推奨サイズおよびレイアウトに合わせて
// この Window をサイズ変更するように設定
pack();
■参考サイト
http://www.hellohiro.com/swinglookandfeel.htm
木曜日, 11月 30, 2006
火曜日, 11月 28, 2006
[Java]Calendarクラス
▼質問
日付を表示するダイアログ内でCalendarクラスをaddしたんだけど次のエラーが出るんだ!?
Calendar calendar = Calendar.getInstance();
calendar = (Calendar)パラメータでもらったCalendarオブジェクト変数.clone();
calendar.add( Calendar.DATE, 1 );
java.lang.NullPointerException
at java.util.GregorianCalendar.getCurrentFixedDate(Unknown Source)
at java.util.GregorianCalendar.add(Unknown Source)
▼回答
時刻に変更したら回避できた?!なぜ?
calendar.add( Calendar.HOUR_OF_DAY, 24 );
▼質問
1970/01/01 00:00:00 からの通算秒をカレンダーオブジェクトに変換するにはどうするの?
▼回答
下記のようにすれば1970/01/01 00:00:00からの通算秒が設定できる。
Calendar calendar = Calendar.getInstance( TimeZone.getTimeZone( "JST" ) );
calendar.set( Calendar.YEAR, 1970 );
calendar.set( Calendar.MONTH, 0 );
calendar.set( Calendar.DATE, 1 );
calendar.set( Calendar.HOUR_OF_DAY, 0 );
calendar.set( Calendar.MINUTE, 0 );
calendar.set( Calendar.SECOND, 0 );
calendar.set( Calendar.MILLISECOND, 0 );
calendar.add( Calendar.SECOND, 通算秒 );
又は、
Calendar calendar = Calendar.getInstance( TimeZone.getTimeZone( "JST" ) );
calendar.setTimeInMillis( 0 );
calendar.add( Calendar.SECOND, 通算秒 );
日付を表示するダイアログ内でCalendarクラスをaddしたんだけど次のエラーが出るんだ!?
Calendar calendar = Calendar.getInstance();
calendar = (Calendar)パラメータでもらったCalendarオブジェクト変数.clone();
calendar.add( Calendar.DATE, 1 );
java.lang.NullPointerException
at java.util.GregorianCalendar.getCurrentFixedDate(Unknown Source)
at java.util.GregorianCalendar.add(Unknown Source)
▼回答
時刻に変更したら回避できた?!なぜ?
calendar.add( Calendar.HOUR_OF_DAY, 24 );
▼質問
1970/01/01 00:00:00 からの通算秒をカレンダーオブジェクトに変換するにはどうするの?
▼回答
下記のようにすれば1970/01/01 00:00:00からの通算秒が設定できる。
Calendar calendar = Calendar.getInstance( TimeZone.getTimeZone( "JST" ) );
calendar.set( Calendar.YEAR, 1970 );
calendar.set( Calendar.MONTH, 0 );
calendar.set( Calendar.DATE, 1 );
calendar.set( Calendar.HOUR_OF_DAY, 0 );
calendar.set( Calendar.MINUTE, 0 );
calendar.set( Calendar.SECOND, 0 );
calendar.set( Calendar.MILLISECOND, 0 );
calendar.add( Calendar.SECOND, 通算秒 );
又は、
Calendar calendar = Calendar.getInstance( TimeZone.getTimeZone( "JST" ) );
calendar.setTimeInMillis( 0 );
calendar.add( Calendar.SECOND, 通算秒 );
土曜日, 11月 11, 2006
[Java]オブジェクトのコピー
▼質問
クラス間でメソッドのパラメータにクラスオブジェクト渡しているんだけど、そのオブジェクトが
完全な独立した形でコピーされないんだ?どうしたらいいの?!
▼回答
cloneメソッドを実装しなくてはいけないようだ!?
複写の方法にも2つの方法があるようだ。
1.シャローコピー(shallow copy)変数共有系?
2.ディープコピー(deep copy)完全独立系?
・・・・
■参考サイト
オブジェクトの複写
http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/ObjectCopy.html
クラス間でメソッドのパラメータにクラスオブジェクト渡しているんだけど、そのオブジェクトが
完全な独立した形でコピーされないんだ?どうしたらいいの?!
▼回答
cloneメソッドを実装しなくてはいけないようだ!?
複写の方法にも2つの方法があるようだ。
1.シャローコピー(shallow copy)変数共有系?
2.ディープコピー(deep copy)完全独立系?
・・・・
■参考サイト
オブジェクトの複写
http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/ObjectCopy.html
金曜日, 11月 10, 2006
[Java]イベントテンプレート
■キーイベント
JFormattedTextField textField = new JFormattedTextField();
textField.addKeyListener( new java.awt.event.KeyAdapter() {
public void keyTyped( java.awt.event.KeyEvent evt ) {
// キーが入力された時の処理
JFormattedTextField tf = (JFormattedTextField)evt.getComponent();
System.out.println( tf.getText() );
}
});
JFormattedTextField textField = new JFormattedTextField();
textField.addKeyListener( new java.awt.event.KeyAdapter() {
public void keyReleased( java.awt.event.KeyEvent evt ) {
// キーが放された時の処理
JFormattedTextField tf = (JFormattedTextField)evt.getComponent();
System.out.println( tf.getText() );
}
});
■フォーカスイベント
JFormattedTextField textField = new JFormattedTextField();
textField.addFocusListener( new java.awt.event.FocusAdapter() {
public void focusLost( java.awt.event.FocusEvent evt ) {
// フォーカスを失った時の処理
JFormattedTextField tf = (JFormattedTextField)evt.getComponent();
System.out.println( tf.getText() );
}
});
JFormattedTextField textField = new JFormattedTextField();
textField.addKeyListener( new java.awt.event.KeyAdapter() {
public void keyTyped( java.awt.event.KeyEvent evt ) {
// キーが入力された時の処理
JFormattedTextField tf = (JFormattedTextField)evt.getComponent();
System.out.println( tf.getText() );
}
});
JFormattedTextField textField = new JFormattedTextField();
textField.addKeyListener( new java.awt.event.KeyAdapter() {
public void keyReleased( java.awt.event.KeyEvent evt ) {
// キーが放された時の処理
JFormattedTextField tf = (JFormattedTextField)evt.getComponent();
System.out.println( tf.getText() );
}
});
■フォーカスイベント
JFormattedTextField textField = new JFormattedTextField();
textField.addFocusListener( new java.awt.event.FocusAdapter() {
public void focusLost( java.awt.event.FocusEvent evt ) {
// フォーカスを失った時の処理
JFormattedTextField tf = (JFormattedTextField)evt.getComponent();
System.out.println( tf.getText() );
}
});
木曜日, 10月 19, 2006
[SQL関連]文字列操作
▼質問
テーブルでDATE型でない年(YEAR)月(MONTH)日(DAY)が別々で存在するフィールドがあるんだ。
これを連結してDATE型に変換したいんだ。
SQL文で文字列を連結するにはどうしたらいいの?
▼回答
文字列の結合には2種類があるようだ。
String1、String2には、文字列型のフィールドを指定するかシングルコーテイション''で文字列を
指定する。
①普通の連結:引数を単純に連結する。
CONCAT(String1, String2, ...)
②特殊な連結:第1引数のseparator(セパレータ:区切り文字)で以降の引数を連結する。
CONCAT_WS(separator, String1, String2, ...)
②CONCAT_WSは、oracleは使えないみたい。MySqlだけなの?
オラクルでこうするとできるようだ。
to_date(YEAR || '.' || MONTH || '.'|| DAY || ' 00:00:00', 'yyyy.mm.dd hh24:mi:ss')
■参考サイト
【SMART! ウェブ講座】~文字列関数
http://www.rfs.jp/sb/sql/03/02.html
テーブルでDATE型でない年(YEAR)月(MONTH)日(DAY)が別々で存在するフィールドがあるんだ。
これを連結してDATE型に変換したいんだ。
SQL文で文字列を連結するにはどうしたらいいの?
▼回答
文字列の結合には2種類があるようだ。
String1、String2には、文字列型のフィールドを指定するかシングルコーテイション''で文字列を
指定する。
①普通の連結:引数を単純に連結する。
CONCAT(String1, String2, ...)
②特殊な連結:第1引数のseparator(セパレータ:区切り文字)で以降の引数を連結する。
CONCAT_WS(separator, String1, String2, ...)
②CONCAT_WSは、oracleは使えないみたい。MySqlだけなの?
オラクルでこうするとできるようだ。
to_date(YEAR || '.' || MONTH || '.'|| DAY || ' 00:00:00', 'yyyy.mm.dd hh24:mi:ss')
■参考サイト
【SMART! ウェブ講座】~文字列関数
http://www.rfs.jp/sb/sql/03/02.html
火曜日, 10月 17, 2006
[Java]メモ3
▼質問
ButtonGroupで作成したボタングループを、プログラムから選択させたい時はどうやるんだい?
▼回答
2つのラジオボタンを選択されていない状態で生成してから、ラジオボタン2を選択された状態にする。
ButtonGroup buttonGroup = new ButtonGroup();
JRadioButton radioButton1 = new JRadioButton( "ラジオボタン1", false );
JRadioButton radioButton1 = new JRadioButton( "ラジオボタン2", false );
buttonGroup.add( radioButton1 );
buttonGroup.add( radioButton2 );
buttonGroup.setSelected( radioButton2.getModel(), true );
▼質問
選択されたラジオボタンをすべて解除するにはどうしたらいいの?
▼回答
ButtonGroupを作成し直す?!しかないのかな・・・?
removeしてaddする。。。。
removeしてaddするだけでは駄目のようだ。
setSelectedメソッドでfalseをセットしてやらないと解除できないみたい。
ButtonGroup buttonGroup = new ButtonGroup();
JRadioButton[] radioButton = new JRadioButton[2];
~略~
for ( int i = 0 ; i < radioButton.length ; i++ ) {
if ( radioButton[i].isSelected() ) {
buttonGroup.remove( radioButton[i] );
radioButton[i].setSelected( false );
buttonGroup.add( radioButton[i] );
}
}
▼質問
テキストフィールドの入力文字数をバイト長で制限したいんだけどどうやればいいの?
▼回答
public class LimitedJTextField extends javax.swing.JTextField {
public LimitedJTextField( int limit ) {
this.setDocument( new ByteLengthLimitedDocument( limit ) );
}
static class ByteLengthLimitedDocument extends javax.swing.text.PlainDocument {
private int limit;
public ByteLengthLimitedDocument( int limit ) {
this.limit = limit;
}
public void insertString( int offs, String str, AttributeSet a ) throws BadLocationException {
if ( str == null ) return;
String text = this.getText( 0, getLength() );
byte[] bytes = text.getBytes();
if ( bytes.length >= limit ) return;
super.insertString( offs, str, a );
}
}
}
■参考サイト
http://java-house.jp/ml/archive/j-h-b/020938.html
▼質問
同じような処理でクラスを分けなくて済む方法はないのかな?
クラスのタイプを判断して処理を分けたいんだ。
▼回答
getClassメソッドを使えばできるよ!
cとdはparentを継承して作成されている。
Object parent;
Object c;
Object d;
public void setParent(Object obj) {
parent = obj;
if ( parent.getClass().equals( c ) ) {
c = (c)obj;
}
else if ( parent.getClass().equals( d ) ) {
d = (d)obj;
}
}
■参考サイト
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/HowToGetClass.html
ButtonGroupで作成したボタングループを、プログラムから選択させたい時はどうやるんだい?
▼回答
2つのラジオボタンを選択されていない状態で生成してから、ラジオボタン2を選択された状態にする。
ButtonGroup buttonGroup = new ButtonGroup();
JRadioButton radioButton1 = new JRadioButton( "ラジオボタン1", false );
JRadioButton radioButton1 = new JRadioButton( "ラジオボタン2", false );
buttonGroup.add( radioButton1 );
buttonGroup.add( radioButton2 );
buttonGroup.setSelected( radioButton2.getModel(), true );
▼質問
選択されたラジオボタンをすべて解除するにはどうしたらいいの?
▼回答
ButtonGroupを作成し直す?!しかないのかな・・・?
removeしてaddする。。。。
removeしてaddするだけでは駄目のようだ。
setSelectedメソッドでfalseをセットしてやらないと解除できないみたい。
ButtonGroup buttonGroup = new ButtonGroup();
JRadioButton[] radioButton = new JRadioButton[2];
~略~
for ( int i = 0 ; i < radioButton.length ; i++ ) {
if ( radioButton[i].isSelected() ) {
buttonGroup.remove( radioButton[i] );
radioButton[i].setSelected( false );
buttonGroup.add( radioButton[i] );
}
}
▼質問
テキストフィールドの入力文字数をバイト長で制限したいんだけどどうやればいいの?
▼回答
public class LimitedJTextField extends javax.swing.JTextField {
public LimitedJTextField( int limit ) {
this.setDocument( new ByteLengthLimitedDocument( limit ) );
}
static class ByteLengthLimitedDocument extends javax.swing.text.PlainDocument {
private int limit;
public ByteLengthLimitedDocument( int limit ) {
this.limit = limit;
}
public void insertString( int offs, String str, AttributeSet a ) throws BadLocationException {
if ( str == null ) return;
String text = this.getText( 0, getLength() );
byte[] bytes = text.getBytes();
if ( bytes.length >= limit ) return;
super.insertString( offs, str, a );
}
}
}
■参考サイト
http://java-house.jp/ml/archive/j-h-b/020938.html
▼質問
同じような処理でクラスを分けなくて済む方法はないのかな?
クラスのタイプを判断して処理を分けたいんだ。
▼回答
getClassメソッドを使えばできるよ!
cとdはparentを継承して作成されている。
Object parent;
Object c;
Object d;
public void setParent(Object obj) {
parent = obj;
if ( parent.getClass().equals( c ) ) {
c = (c)obj;
}
else if ( parent.getClass().equals( d ) ) {
d = (d)obj;
}
}
■参考サイト
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/HowToGetClass.html
登録:
投稿 (Atom)