+ switch (timeSig2) {
+ case 16: measure = timeSig1; // 1/16
+ break;
+ case 8: measure = timeSig1 * 2; // 1/16
+ halfBeat = measure / timeSig1; // 1/8
+ break;
+ case 4: measure = timeSig1 * 4; // 1/16
+ halfBeat = beat / 2; // 1/8
+ beat = measure / timeSig1; // 1/4
+ break;
+ case 2: measure = timeSig1 * 8; // 1/16
+ halfBeat = beat / 2; // 1/8
+ beat = halfNote / 2; // 1/4
+ halfNote = measure / timeSig1; // 1/2
+ break;
+ case 1: measure = timeSig1 * 16; // 1/16
+ halfBeat = beat / 2; // 1/8
+ beat = halfNote / 2; // 1/4
+ halfNote = measure / 2; // 1/2
+ break;
+ }
+
+ }
+ public void paintComponent(Graphics g) {
+ super.paintComponent(g);
+ if (!(g instanceof Graphics2D)) return;
+ Graphics2D g2 = (Graphics2D)g;
+ g2.setColor(Color.black);
+ for (int c = 0; c < 200; c++) {
+ g2.drawLine(0, c * CELL_HEIGHT, 5, c * CELL_HEIGHT); // 1/16
+ g2.drawLine(0, c * CELL_HEIGHT * halfBeat, 10, c * CELL_HEIGHT * halfBeat); // 1/8
+ g2.drawLine(0, c * CELL_HEIGHT * beat, 15, c * CELL_HEIGHT * beat); // 1/4
+ g2.drawLine(0, c * CELL_HEIGHT * halfNote, 20, c * CELL_HEIGHT * halfNote); // 1/2
+ g2.drawLine(0, c * CELL_HEIGHT * measure, 30, c * CELL_HEIGHT * measure); // 1/1
+ }