|
我如何展示序列标尺?
当你图形化序列时需要展示标尺,这样你就很容易定位碱基。Biojava包含一个叫标尺绘制器(RulerRenderer)的序列绘制器实现能够绘制序列标尺。
因为序列绘制上下文(SequenceRenderContext)同一时间只能使用一个序列绘制器,所以你必须使用多行绘制器(MutiLineRenderer)。多行绘制器实现了序列绘制器接口,能够包装多个序列绘制器,在多个轨道上调节他们的图形。
下面的程序使用了标尺绘制器,多行绘制器。后面的是程序的截屏。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import org.biojava.bio.gui.sequence.*;
import org.biojava.bio.symbol.*;
public class MultiView extends JFrame {
private JPanel jPanel = new JPanel();
private MultiLineRenderer mlr = new MutiLintRenderer();
private SequenceRenderer symR = new SymbolSequenceRenderer();
private RulerRender ruler = new RulerRenderer();
private SequencePanel seqPanel = new SequencePanel();
private Sequence seq;
public MutiView(){
try {
seq = ProteinTools.createProteinSequence(
"agcgstyravlivtymaragrsecharlvahklchg",
"protein 1");
init();
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args){
MultiView multiView = new MultiView();
multiView.pack();
multiView.show();
}
protected void processWindowEvent(WindowEvent we){
if (we.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
else {
super.processWindowEvent(we);
}
}
// 设置GUI组件
private void init() throws Exception {
this.setTitle("MultiView");
this.getContentPane().add(jPanel,BorderLayout.CENTER);
jPanel.add(seqPanel,BorderLayout.CENTER);
//将标志序列绘制器(SymbolSequenceRenderer)和标尺绘制器(RulerRenderer)加到多行绘制器//(MultiLineRenderer)中。
mlr.addRenderer(symR);
mlr.addRenderer(ruler);
//设置多行绘制器为主绘制器
seqPanel.setRenderer(mlr);
//设置序列
seqPanel.setSequence(seq);
//设置显示范围
seqPanel.setRange(new RangeLocation(1,seq.length()));
}
}
|