yamaken1343’s blog

技術ブログもどき

JavaFXで時間管理タイマーを作る [見た目編]

前回の記事

yamaken1343.hatenablog.jp

fxmlファイルをいじってどういった見た目になるか規定していきます。

コード

  • GridPaneに配置すれば格子状に配列されるらしい
  • 要素は揃ったけど見た目的にはダサいのでなんとかしたい
  • テキストは適当においた(参考: らぼったあ | としつーる
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="Controller"
          xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
    <Label text="らぼいん: " GridPane.rowIndex="0" GridPane.columnIndex="0"/>
    <Label fx:id="inDate" text="dummy" GridPane.rowIndex="0" GridPane.columnIndex="1"/>
    <Label text="らぼりだ: " GridPane.rowIndex="0" GridPane.columnIndex="2"/>
    <Label fx:id="outDate" text="dummy" GridPane.rowIndex="0" GridPane.columnIndex="3"/>
    <Label text="らぼ時間" GridPane.rowIndex="1" GridPane.columnIndex="0"/>
    <Label fx:id="allTimerLabel" GridPane.rowIndex="2" GridPane.columnIndex="1"/>
    <Label text="研究時間: " GridPane.rowIndex="3" GridPane.columnIndex="0"/>
    <Label fx:id="childTimerLabel1" GridPane.rowIndex="3" GridPane.columnIndex="1"/>
    <Label text="休憩時間: " GridPane.rowIndex="4" GridPane.columnIndex="0"/>
    <Label fx:id="childTimerLabel2" GridPane.rowIndex="4" GridPane.columnIndex="1"/>
    <Label text="その他時間: " GridPane.rowIndex="5" GridPane.columnIndex="0"/>
    <Label fx:id="childTimerLabel3" GridPane.rowIndex="5" GridPane.columnIndex="1"/>
    <Label text="状態: " GridPane.rowIndex="6" GridPane.columnIndex="0"/>
    <Label fx:id="statusLabel" text="dummy" GridPane.rowIndex="6" GridPane.columnIndex="1"/>
    <Label fx:id="mainTimerLabel" GridPane.rowIndex="7" GridPane.columnIndex="1"/>
    <Button fx:id="mainButton" text="らぼいん/らぼりだ" GridPane.rowIndex="8" GridPane.columnIndex="0"/>
    <Button fx:id="childButton1" text="研究" GridPane.rowIndex="8" GridPane.columnIndex="1"/>
    <Button fx:id="childButton2" text="休憩" GridPane.rowIndex="8" GridPane.columnIndex="2"/>
    <Button fx:id="childButton3" text="その他" GridPane.rowIndex="8" GridPane.columnIndex="3"/>
</GridPane>

結果

f:id:yamaken1343:20180412120720p:plain

次回

yamaken1343.hatenablog.jp

JavaFXで時間管理タイマーを作る [設計編]

JavaJavaFXとタイピング*1の練習で実用的かつかんたんなアプリケーションを作成したい。

 

 画面設計

入室時間    退室時間

総時間(おおきめ)

総研究時間

総休憩時間

総その他時間

現在の状態(研究/休憩/その他)

現在の状態時間(おおきめ)

入室/退室ボタン 研究ボタン 休憩ボタン その他ボタン

 

クラス設計

  • 経過時間と状態を持つクラスを作成
  • 状態によって毎秒カウントアップするか判別

実装

class LabT {
private long time = 0;
private boolean status = false;

void timeCount(){
if (status) time++;
}
void reset(){
time = 0;
}
long getTime(){
return time;
}
boolean getStatus() {
return status;
}
void active(){
status = true;
}
void inactive(){
status = false;
}
String formatPrint(){
return String.format("%02d:%02d:%02d", time/3600%60, time/60%60, time%60);
}
}

 

 続き

 

 

yamaken1343.hatenablog.jp

追記

なんだこれ

 

f:id:yamaken1343:20180425184357p:plain

桁がおかしい

修正しておきました

元コード

String formatPrint(){
    return String.format("%02d:%02d:%02d", time/3600, time/60, time%60);
}

*1:Dvorakにしたせいで速度がダメになった

OpenCVのインストール

OpenCV: Installation in Linux

github.com

github.com

環境

Ubuntu16.04 OpenCV3.4.1

依存関係のインストール

sudo apt-get install build-essential libgtk-3-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk python-scipy python-matplotlib python3-numpy python3-scipy python3-matplotlib libtbb-dev libeigen3-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev qt5-default sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev default-jdk ant libvtk6-qt-dev freeglut3-dev libtbb-dev libhdf5-dev libpython3.5-dev

ソースの取得

git clone https://github.com/opencv/opencv
git clone https://github.com/opencv/opencv_contrib
cd opencv

スクリプトの実行

#!/bin/bash

SOURCE_DIR="echo $(cd $(dirname $0);pwd)"
BUILD_DIR=${SOURCE_DIR}/build
GENERATOR_NAME="Unix Makefiles"

mkdir build
cd build

cmake \
-G "${GENERATOR_NAME}" \
--build ${BUILD_DIR} \
-D BUILD_PACKAGE=ON \
-D BUILD_SHARED_LIBS=ON \
-D BUILD_WITH_DEBUG_INFO=ON \
-D BUILD_opencv_apps=ON \
-D BUILD_opencv_calib3d=ON \
-D BUILD_opencv_core=ON \
-D BUILD_opencv_features2d=ON \
-D BUILD_opencv_flann=ON \
-D BUILD_opencv_highgui=ON \
-D BUILD_opencv_imgcodecs=ON \
-D BUILD_opencv_imgproc=ON \
-D BUILD_opencv_java=ON \
-D BUILD_opencv_ml=ON \
-D BUILD_opencv_objdetect=ON \
-D BUILD_opencv_photo=ON \
-D BUILD_opencv_python2=ON \
-D BUILD_opencv_python3=ON \
-D BUILD_opencv_shape=ON \
-D BUILD_opencv_stitching=ON \
-D BUILD_opencv_superres=ON \
-D BUILD_opencv_ts=ON \
-D BUILD_opencv_video=ON \
-D BUILD_opencv_videoio=ON \
-D BUILD_opencv_videostab=ON \
-D CMAKE_BUILD_TYPE=RELEASE \
-D WITH_1394=ON \
-D WITH_EIGEN=ON \
-D WITH_FFMPEG=ON \
-D WITH_GIGEAPI=ON \
-D WITH_GSTREAMER=ON \
-D WITH_GTK=ON \
-D WITH_IPP=ON \
-D WITH_JASPER=ON \
-D WITH_JPEG=ON \
-D WITH_LIBV4L=ON \
-D WITH_OPENCL=ON \
-D WITH_OPENEXR=ON \
-D WITH_OPENGL=ON \
-D WITH_OPENMP=ON \
-D WITH_PNG=ON \
-D WITH_PVAPI=ON \
-D WITH_QT=ON \
-D WITH_V4L=ON \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=/opt/opencv_contrib/modules ${SOURCE_DIR} \
${SOURCE_DIR}

ビルドとインストール

cd build/
make -j4
sudo make install
sudo ldconfig

立ち上げメモ

  • Ubuntuのインストール
    • XOrgが暴走してる時はソフトウェアアップデート(ソフトウェアセンター)で治る
  • Gnomeのインストール
sudo apt-get install ubuntu-gnome-desktop 
  • Mozcのインストール
sudo apt-get install ibus-mozc 
killall ibus-daemon 
sudo killall ibus-daemon 
ibus-daemon -d -x &
$ LANG=C xdg-user-dirs-gtk-update
  • twinkの設定
  • ソフトウェアのインストール
    • Atom
    • IDE
    • Marp
    • Vivaldi
    • mikutter
    • jetbrainsはToolboxからダウンロードしたほうがいいかも
  • ライブラリのインストール
sudo apt-get install exfat-utils exfat-fuse
sudo apt-get install ant openjfx
sudo apt-get install libgomp1
sudo apt-get install build-essential
  • texの設定
    • フォント埋め込みの設定
$ kanji-config-updmap ipa
- .latexmkrcの作成
#!/usr/bin/perl
# commands for latex,bibtex,dvipdf. %S : source file, %B : base name, %D : pdf file, %O : option
$latex         = 'platex %O -interaction=nonstopmode -synctex=1 -kanji=utf8 %S';
$bibtex        = 'pbibtex %O %B -kanji=utf8';
$dvipdf        = 'dvipdfmx %O -o %D %S ';

# method to make pdf - 0:not making, 1:pdflatex, 2:ps2pdf, 3:dvipdf
$pdf_mode      = 3;