📄 comparisonpanel.java
字号:
package abchr.gui.modulecontrols;
import abchr.ComparisonModule;
import abchr.ProjectModule;
import abchr.gui.SingleComparisonPanel;
import guiutils.LineLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class ComparisonPanel extends JPanel implements ModuleControl {
private class SelectSampleAction extends AbstractAction {
private int sample;
public SelectSampleAction(int sample) {
this.sample=sample;
}
public void actionPerformed(ActionEvent e) {
if(panels.length<sample){return;}
panels[sample].requestFocus();
}
}
private ComparisonModule comparisonModule;
private SingleComparisonPanel[] panels;
public ComparisonPanel(ComparisonModule comparisonModule) {
super(new LineLayout(1,5,LineLayout.CENTER,false));
setModule(comparisonModule);
InputMap im=this.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
ActionMap am=this.getActionMap();
for(int i=1;i<=9;i++) {
im.put(KeyStroke.getKeyStroke(Character.forDigit(i,10)),"SelectSample"+i);
am.put("SelectSample"+i,new SelectSampleAction(i-1));
}
}
public ComparisonPanel(){this(null);}
public void setModule(ProjectModule module) {
this.comparisonModule=(ComparisonModule)module;
this.removeAll();
if(comparisonModule==null){this.setPreferredSize(new Dimension(400,300));return;}
panels=new SingleComparisonPanel[comparisonModule.getGroupCount()];
for(int i=0;i<comparisonModule.getGroupCount();i++) {
SingleComparisonPanel singleCP=new SingleComparisonPanel(""+(i+1),comparisonModule.getGroup(i));
panels[i]=singleCP;
if(i==0) {
Insets insets=this.getInsets();
Dimension singleCPSize=singleCP.getPreferredSize();
this.setPreferredSize(new Dimension((singleCPSize.width+1)*comparisonModule.getGroupCount()+insets.left+insets.right,singleCPSize.height+insets.top+insets.bottom+20));
}
this.add(singleCP);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -