風邪でここ数日瀕死
地味に作ってたソフトが大体完成しました。
ワイヤーカット放電加工機の簡易シミュレータ的なものです。
NC言語で書かれたファイルを読み込んで描画してくれるものです。
今やほとんどCAMが使われてると思いますが、原理理解の目的や
学校などで手書きする人向けに。
画像で描いているものはトロコイド曲線、C言語にてプロット点を並べました。
全ての行にG01とありますが無くても同じように動きます。
というか毎回G01と書かないのが普通ですよね。
今回地味に1番苦労したのが、現在描画している行と右側のリストボックスを対応させる点。
JPanelクラスの
setSelectedIndex(int index);
メソッドで表示させたいindex(行)を指定すれば
対応が楽なのでこのメソッドを使いたい。
一方で
setSelectedValue(object anObject, boolean shouldScroll);
メソッドを用いれば、shouldScroll = trueとするだけで
現在選択されてる箇所が見えるまで自動スクロールしてくれるらしい。
ただ選択する行を値で指定しなければいけず、同じ要素の行がある可能性があるNC言語では現実的ではなさそう。
どのようにしてsetSelectedValueで選択した箇所までスクロールさせるか、
ScrollPaneとか調べたり使おうとしたりしたけど無駄でした。
そして何日かまたいだ後、やっとのことでJPanelクラスに
ensureIndexIsVisible(int index);
メソッドを見つけました。
これでindexの位置までスクロールできるようで、試したら普通にいけました。
恐らく「is」「index」「set」「scroll」などで始まるだろうと思って
そこばっかし探してただけでしたと。
もう一つ苦労した、というか解決していないのはファイル読み込み時の
初期ディレクトリ設定について。これはまた体力が回復してから考えます。
地味に作ってたソフトが大体完成しました。
ワイヤーカット放電加工機の簡易シミュレータ的なものです。
NC言語で書かれたファイルを読み込んで描画してくれるものです。
今やほとんどCAMが使われてると思いますが、原理理解の目的や
学校などで手書きする人向けに。
画像で描いているものはトロコイド曲線、C言語にてプロット点を並べました。
全ての行にG01とありますが無くても同じように動きます。
というか毎回G01と書かないのが普通ですよね。
今回地味に1番苦労したのが、現在描画している行と右側のリストボックスを対応させる点。
JPanelクラスの
setSelectedIndex(int index);
メソッドで表示させたいindex(行)を指定すれば
対応が楽なのでこのメソッドを使いたい。
一方で
setSelectedValue(object anObject, boolean shouldScroll);
メソッドを用いれば、shouldScroll = trueとするだけで
現在選択されてる箇所が見えるまで自動スクロールしてくれるらしい。
ただ選択する行を値で指定しなければいけず、同じ要素の行がある可能性があるNC言語では現実的ではなさそう。
どのようにしてsetSelectedValueで選択した箇所までスクロールさせるか、
ScrollPaneとか調べたり使おうとしたりしたけど無駄でした。
そして何日かまたいだ後、やっとのことでJPanelクラスに
ensureIndexIsVisible(int index);
メソッドを見つけました。
これでindexの位置までスクロールできるようで、試したら普通にいけました。
恐らく「is」「index」「set」「scroll」などで始まるだろうと思って
そこばっかし探してただけでしたと。
もう一つ苦労した、というか解決していないのはファイル読み込み時の
初期ディレクトリ設定について。これはまた体力が回復してから考えます。