import javax.swing.table.TableCellEditor;\r
import javax.swing.table.TableCellRenderer;\r
import javax.swing.table.TableColumn;\r
+import javax.swing.table.TableColumnModel;\r
import javax.swing.table.TableModel;\r
\r
/**\r
}\r
};\r
}\r
+ TableColumnModel colModel = getColumnModel();\r
+ for( SequenceListTableModel.Column c : SequenceListTableModel.Column.values() )\r
+ colModel.getColumn(c.ordinal()).setPreferredWidth(c.preferredWidth);\r
}\r
@Override\r
public void tableChanged(TableModelEvent event) {\r
// 列モデルからではヘッダタイトルが再描画されないことがある。\r
// そこで、ヘッダビューから repaint() で突っついて再描画させる。\r
JTableHeader th = getTableHeader();\r
- if( th != null ) th.repaint();\r
+ if( th != null ) {\r
+ th.repaint();\r
+ }\r
}\r
/**\r
* プレイボタンを埋め込んだセルエディタ\r
trackSelectionListener = new TrackSelectionListener();\r
titleLabel = new TitleLabel();\r
model.sequenceListTableModel.sequenceListSelectionModel.addListSelectionListener(titleLabel);\r
+ TableColumnModel colModel = getColumnModel();\r
+ for( SequenceTrackListTableModel.Column c : SequenceTrackListTableModel.Column.values() )\r
+ colModel.getColumn(c.ordinal()).setPreferredWidth(c.preferredWidth);\r
}\r
/**\r
* このテーブルビューが表示するデータを提供する\r
//\r
eventSelectionListener = new EventSelectionListener();\r
titleLabel = new TitleLabel();\r
+ //\r
+ TableColumnModel colModel = getColumnModel();\r
+ for( TrackEventListTableModel.Column c : TrackEventListTableModel.Column.values() )\r
+ colModel.getColumn(c.ordinal()).setPreferredWidth(c.preferredWidth);\r
}\r
/**\r
* このテーブルビューが表示するデータを提供する\r
*/\r
public enum Column {\r
/** MIDIシーケンスの番号 */\r
- SEQ_NUMBER("No.", Integer.class),\r
+ SEQ_NUMBER("No.", Integer.class, 20),\r
/** 変更済みフラグ */\r
- MODIFIED("Modified", Boolean.class) {\r
+ MODIFIED("Modified", Boolean.class, 50) {\r
@Override\r
public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
return sequenceModel.isModified();\r
}\r
},\r
/** 再生ボタン */\r
- SEQ_PLAY("Sequencer", String.class) {\r
+ SEQ_PLAY("Play/Stop", String.class, 60) {\r
@Override\r
public boolean isCellEditable() { return true; }\r
},\r
/** 再生中の時間位置(分:秒) */\r
- SEQ_POSITION("Position", String.class) {\r
+ SEQ_POSITION("Position", String.class, 60) {\r
@Override\r
public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
return sequenceModel.isOnSequencer()\r
}\r
},\r
/** シーケンスの時間長(分:秒) */\r
- SEQ_LENGTH("Length", String.class) {\r
+ SEQ_LENGTH("Length", String.class, 80) {\r
@Override\r
public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
long usec = sequenceModel.getSequence().getMicrosecondLength();\r
}\r
},\r
/** ファイル名 */\r
- FILENAME("Filename", String.class) {\r
+ FILENAME("Filename", String.class, 100) {\r
@Override\r
public boolean isCellEditable() { return true; }\r
public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
}\r
},\r
/** シーケンス名(最初のトラックの名前) */\r
- SEQ_NAME("Sequence name", String.class) {\r
+ SEQ_NAME("Sequence name", String.class, 250) {\r
@Override\r
public boolean isCellEditable() { return true; }\r
public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
}\r
},\r
/** タイミング解像度 */\r
- RESOLUTION("Resolution", Integer.class) {\r
+ RESOLUTION("Resolution", Integer.class, 60) {\r
@Override\r
public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
return sequenceModel.getSequence().getResolution();\r
}\r
},\r
/** トラック数 */\r
- TRACKS("Tracks", Integer.class) {\r
+ TRACKS("Tracks", Integer.class, 40) {\r
@Override\r
public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
return sequenceModel.getSequence().getTracks().length;\r
}\r
},\r
/** タイミング分割形式 */\r
- DIVISION_TYPE("DivType", String.class) {\r
+ DIVISION_TYPE("DivType", String.class, 50) {\r
@Override\r
public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
float divType = sequenceModel.getSequence().getDivisionType();\r
};\r
String title;\r
Class<?> columnClass;\r
+ int preferredWidth;\r
/**\r
* 列の識別子を構築します。\r
* @param title 列のタイトル\r
* @param columnClass 列のクラス\r
*/\r
- private Column(String title, Class<?> columnClass) {\r
+ private Column(String title, Class<?> columnClass, int preferredWidth) {\r
this.title = title;\r
this.columnClass = columnClass;\r
+ this.preferredWidth = preferredWidth;\r
}\r
public boolean isCellEditable() { return false; }\r
public Object getValueOf(SequenceTrackListTableModel sequenceModel) {\r
*/\r
public enum Column {\r
/** トラック番号 */\r
- TRACK_NUMBER("No.", Integer.class),\r
+ TRACK_NUMBER("No.", Integer.class, 20),\r
/** イベント数 */\r
- EVENTS("Events", Integer.class),\r
+ EVENTS("Events", Integer.class, 40),\r
/** Mute */\r
- MUTE("Mute", Boolean.class),\r
+ MUTE("Mute", Boolean.class, 30),\r
/** Solo */\r
- SOLO("Solo", Boolean.class),\r
+ SOLO("Solo", Boolean.class, 30),\r
/** 録音するMIDIチャンネル */\r
- RECORD_CHANNEL("RecCh", String.class),\r
+ RECORD_CHANNEL("RecCh", String.class, 40),\r
/** MIDIチャンネル */\r
- CHANNEL("Ch", String.class),\r
+ CHANNEL("Ch", String.class, 30),\r
/** トラック名 */\r
- TRACK_NAME("Track name", String.class);\r
+ TRACK_NAME("Track name", String.class, 100);\r
String title;\r
Class<?> columnClass;\r
+ int preferredWidth;\r
/**\r
* 列の識別子を構築します。\r
* @param title 列のタイトル\r
* @param widthRatio 幅の割合\r
* @param columnClass 列のクラス\r
*/\r
- private Column(String title, Class<?> columnClass) {\r
+ private Column(String title, Class<?> columnClass, int preferredWidth) {\r
this.title = title;\r
this.columnClass = columnClass;\r
+ this.preferredWidth = preferredWidth;\r
}\r
}\r
/**\r
*/\r
public enum Column {\r
/** MIDIイベント番号 */\r
- EVENT_NUMBER("No.", Integer.class),\r
+ EVENT_NUMBER("No.", Integer.class, 20),\r
/** tick位置 */\r
- TICK_POSITION("TickPos.", Long.class),\r
+ TICK_POSITION("TickPos.", Long.class, 40),\r
/** tick位置に対応する小節 */\r
- MEASURE_POSITION("Measure", Integer.class),\r
+ MEASURE_POSITION("Measure", Integer.class, 40),\r
/** tick位置に対応する拍 */\r
- BEAT_POSITION("Beat", Integer.class),\r
+ BEAT_POSITION("Beat", Integer.class, 20),\r
/** tick位置に対応する余剰tick(拍に収まらずに余ったtick数) */\r
- EXTRA_TICK_POSITION("ExTick", Integer.class),\r
+ EXTRA_TICK_POSITION("ExTick", Integer.class, 20),\r
/** MIDIメッセージ */\r
- MESSAGE("MIDI Message", String.class);\r
+ MESSAGE("MIDI Message", String.class, 200);\r
private String title;\r
private Class<?> columnClass;\r
+ int preferredWidth;\r
/**\r
* 列の識別子を構築します。\r
* @param title 列のタイトル\r
* @param widthRatio 幅の割合\r
* @param columnClass 列のクラス\r
*/\r
- private Column(String title, Class<?> columnClass) {\r
+ private Column(String title, Class<?> columnClass, int preferredWidth) {\r
this.title = title;\r
this.columnClass = columnClass;\r
+ this.preferredWidth = preferredWidth;\r
}\r
}\r
/**\r