⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stateframe.java

📁 生物物种进化历程的演示
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package TreeJuxtaposer;import java.util.Iterator;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JButton;import javax.swing.ButtonGroup;import javax.swing.JLabel;import javax.swing.JColorChooser;import java.awt.GraphicsConfiguration;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Color;import java.awt.Canvas;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.MouseListener;import java.awt.event.MouseEvent;/** * @author jslack * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */public class StateFrame extends JFrame implements ActionListener, MouseListener {	private final static String title = "Groups";	private JPanel blank;  // for spacing, if needed	private TreeJuxtaposer tj;	private static final int CANVAS_SIZE = 15;		/* Active Panel	 * Includes the following panels:	 * 	grow direction	 * 	grow action	 * 	active group	 */	private JPanel activePanel;	private final static JLabel activePanelLabel = new JLabel("Active");	private JButton resetButton;		/* grow direction panel */	private JPanel growDirectionPanel;	private ButtonGroup growSelect;	private JRadioButton growMode[];	private final static JLabel growDirLabel = new JLabel("Direction");	private final static String growLabel[] = {"Horizontal", "Vertical", "Both"};	private final static int H_MODE = 0;	private final static int V_MODE = 1;	private final static int B_MODE = 2;		/* grow action panel */	private JPanel growButtonPanel;	private JButton growButton[];	private final static JLabel growButtonLabel = new JLabel("Grow");	private final static String buttonLabel[] = {"Bigger", "Smaller"};	private final static int B_GROW = 0;	private final static int S_GROW = 1;		/* active group panel */	private JPanel activeGroupPanel;	private Canvas activeCanvas[];	private ButtonGroup activeSelect;	private JRadioButton activeMode[];	public final static String activeLabel[] = {"Group A", "Group B", "Group C", "Group D",																		"Mouse Over", "Differences", "Found", "LCA"};	static final private String colorTitle[] = {			"'Group A' color selection",			"'Group B' color selection",			"'Group C' color selection",			"'Group D' color selection",			"'Mouse Over' color selection",			"'Tree Differences' color selection",			"'Found Nodes' color selection",			" 'LCA' color selection"	};	public final static int GA_ACT = 0;	public final static int GB_ACT = 1;	public final static int GC_ACT = 2;	public final static int GD_ACT = 3;	public final static int M_ACT = 4;	public final static int D_ACT = 5;	public final static int F_ACT = 6;	public final static int LCA_ACT = 7;		/* Mark panel */	private JPanel markPanel;	private final static JLabel markPanelLabel = new JLabel("Mark");		/* Mark radio buttons */	private ButtonGroup markSelect;	private JRadioButton markMode[];	private JPanel markModePanel;	private final static String markLabel[] = {activeLabel[0],		activeLabel[1], activeLabel[2], activeLabel[3]};	private Canvas markCanvas[];	private final static String clearLabel[] = {"Clear group", "Clear all"};	private final static int G_CLEAR = 0;	private final static int A_CLEAR = 1;	private JButton clearButton[];	/* mark resolution (node or subtree marking) */	private final static JLabel resolutionTitle = new JLabel("Mark Resolution");	private JPanel resolutionPanel;	private ButtonGroup markResolution;	private final static String resolutionLabel[] = {"Node", "Subtree"};	private final static int N_RES = 0;	private final static int S_RES = 1;	private JRadioButton resolutionMode[];	private ButtonGroup actionSelect;		/* Least common ancestor checkboxes */	private final static String LCA = "LCA";	private JCheckBox LCAGroup; // for growing by LCA when checked	public JCheckBox LCAMark; // for marking by LCA (follow marks to LCA) when checked		private final static Color initialColor[] = {		Color.getHSBColor(250f/360f, 1f, 1f),  // group A		Color.getHSBColor(140f/360f, 1f, 1f),  // group B		Color.getHSBColor(180f/360f, 1f, 1f),  // group C		Color.getHSBColor(280f/360f, 1f, 1f),  // group D		Color.getHSBColor(36f/360f, 1f, 1f),  // mouse over		Color.getHSBColor(0f/360f, 1f, 1f),  // differences		//new Color(87, 152, 64), // dark green		Color.getHSBColor(310f/360f, 1f, 1f),  // found		 new Color(87, 152, 64) // lca	};	private Color color[];		/**	 * Constructor for StateFrame.	 * @throws HeadlessException	 */	public StateFrame(TreeJuxtaposer tj)  {		super();		this.tj = tj;		this.setResizable(false);		initComponents();	}	/**	 * Constructor for StateFrame.	 * @param gc	 */	public StateFrame(TreeJuxtaposer tj, GraphicsConfiguration gc) {		super(gc);		this.tj = tj;		this.setResizable(false);		initComponents();	}	/**	 * Constructor for StateFrame.	 * @param title	 * @throws HeadlessException	 */	public StateFrame(TreeJuxtaposer tj, String title)  {		super(title);		this.tj = tj;				this.setResizable(false);		initComponents();	}	/**	 * Constructor for StateFrame.	 * @param title	 * @param gc	 */	public StateFrame(TreeJuxtaposer tj, String title, GraphicsConfiguration gc) {		super(title, gc);		this.tj = tj;				this.setResizable(false);		initComponents();	}	private void initComponents()	{	GridBagConstraints gbc = new GridBagConstraints();	this.setTitle(title);	((JFrame)this).setLocation(10,30);	this.getContentPane().setLayout(new GridBagLayout());	/* Active Panel */	activePanel = new JPanel(new GridBagLayout());	activePanel.setBorder(javax.swing.BorderFactory.createLineBorder(Color.black));	gbc.ipadx = 0;	gbc.ipady = 0;	gbc.gridx = 0;	gbc.gridwidth = 1;	gbc.gridheight = 1;	gbc.gridy = 0;	//activePanel.add(activePanelLabel, gbc);		/* Grow direction panel */	growDirectionPanel = new JPanel(new GridBagLayout());	//growDirectionPanel.setBorder(javax.swing.BorderFactory.createLineBorder(Color.black));	gbc.gridx = 0;	gbc.gridy = 0;	gbc.gridwidth = 1;	//gbc.gridwidth = growLabel.length;	//growDirectionPanel.add(growDirLabel, gbc);	growButton = new JButton[buttonLabel.length];	for (int i = 0; i < buttonLabel.length; i++)	{		growButton[i] = new JButton(buttonLabel[i]);		gbc.gridx = i;		growDirectionPanel.add(growButton[i], gbc);	}		growMode = new JRadioButton[growLabel.length];	growSelect = new ButtonGroup();	gbc.gridy = 0;	for (int i = 0; i < growLabel.length; i++)	{		growMode[i] = new JRadioButton(growLabel[i]);		growSelect.add(growMode[i]);		gbc.gridx = i + buttonLabel.length;		growDirectionPanel.add(growMode[i], gbc);	}		LCAGroup = new JCheckBox(LCA, false);	gbc.gridx = buttonLabel.length + 2*growLabel.length;	gbc.anchor = GridBagConstraints.EAST;//	growDirectionPanel.add(LCAGroup, gbc);	gbc.anchor = GridBagConstraints.CENTER;		resetButton = new JButton("Reset");	gbc.gridx++;	gbc.anchor = GridBagConstraints.WEST;	growDirectionPanel.add(resetButton, gbc);	gbc.anchor = GridBagConstraints.CENTER;		gbc.gridx = 1;	gbc.gridy = 1;	gbc.fill = GridBagConstraints.BOTH;	activePanel.add(growDirectionPanel, gbc);	gbc.fill = GridBagConstraints.NONE;		/* Grow button panel */	/*	growButtonPanel = new JPanel(new GridBagLayout());	growButtonPanel.setBorder(javax.swing.BorderFactory.createLineBorder(Color.black));	gbc.gridx = 0;	gbc.gridy = 0;	growButtonPanel.add(growButtonLabel);	*/		/* Active Group Panel */	activeGroupPanel = new JPanel(new GridBagLayout());	//activeGroupPanel.setBorder(javax.swing.BorderFactory.createLineBorder(Color.black));	activeCanvas = new Canvas[activeLabel.length];	activeMode = new JRadioButton[activeLabel.length];	activeSelect = new ButtonGroup();	color = new Color[activeLabel.length];	gbc.gridy = 0;		for (int i = 0; i < activeLabel.length; i++)	{		color[i] = new Color(initialColor[i].getRGB());		if (i >= activeLabel.length / 2)		{			gbc.gridy = 1;			gbc.gridx = 3 * (i - activeLabel.length/2 );		}		else		  gbc.gridx = 3 * i;		// put in radio buttons		activeMode[i] = new JRadioButton(activeLabel[i]);		activeSelect.add(activeMode[i]);		gbc.ipadx = 0;		gbc.anchor = GridBagConstraints.WEST;		gbc.gridx += 1;		activeGroupPanel.add(activeMode[i], gbc);		activeCanvas[i] = new Canvas();		activeCanvas[i].setBackground(color[i]);		activeCanvas[i].setSize(CANVAS_SIZE, CANVAS_SIZE);		gbc.gridx -= 1;		gbc.anchor = GridBagConstraints.EAST;		JPanel canvasPanel = new JPanel();		canvasPanel.add(activeCanvas[i]);		canvasPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));		activeGroupPanel.add(canvasPanel, gbc);		//activeGroupPanel.add(activeCanvas[i], gbc);		gbc.ipadx = 10;		gbc.gridx += 2;		blank = new JPanel();		activeGroupPanel.add(blank, gbc);	}	gbc.anchor = GridBagConstraints.CENTER;	gbc.ipadx = 0;	activeMode[M_ACT].setSelected(true);	gbc.gridy = 0;	gbc.gridx = 1;	gbc.fill = GridBagConstraints.BOTH;	activePanel.add(activeGroupPanel, gbc);	gbc.fill = GridBagConstraints.NONE;		/* Active Panel events */	resetButton.addActionListener(this);		growMode[H_MODE].addActionListener(this);	growMode[V_MODE].addActionListener(this);	growMode[B_MODE].addActionListener(this);		growButton[B_GROW].addActionListener(this);	growButton[S_GROW].addActionListener(this);		activeMode[GA_ACT].addActionListener(this);	activeMode[GB_ACT].addActionListener(this);	activeMode[GC_ACT].addActionListener(this);	activeMode[GD_ACT].addActionListener(this);	activeMode[M_ACT].addActionListener(this);	activeMode[D_ACT].addActionListener(this);	activeMode[F_ACT].addActionListener(this);	activeMode[LCA_ACT].addActionListener(this);		activeCanvas[GA_ACT].addMouseListener(this);	activeCanvas[GB_ACT].addMouseListener(this);	activeCanvas[GC_ACT].addMouseListener(this);	activeCanvas[GD_ACT].addMouseListener(this);	activeCanvas[M_ACT].addMouseListener(this);	activeCanvas[D_ACT].addMouseListener(this);	activeCanvas[F_ACT].addMouseListener(this);	activeCanvas[LCA_ACT].addMouseListener(this);	LCAGroup.addActionListener(this);	/* Mark Panel */	markPanel = new JPanel(new GridBagLayout());	markPanel.setBorder(javax.swing.BorderFactory.createLineBorder(Color.black));	gbc.ipadx = 0;	gbc.ipady = 0;	gbc.gridx = 0;	gbc.gridwidth = 1;	gbc.gridheight = 1;	gbc.gridy = 0;	gbc.anchor = GridBagConstraints.WEST;	markPanel.add(markPanelLabel, gbc);	gbc.anchor = GridBagConstraints.CENTER;		markModePanel = new JPanel();	//markModePanel.setBorder(javax.swing.BorderFactory.createLineBorder(Color.black));	markSelect = new ButtonGroup();	gbc.gridy = 1;	markMode = new JRadioButton[markLabel.length];	markCanvas = new Canvas[markLabel.length];	for (int i = 0; i < markLabel.length; i++)	{		markMode[i] = new JRadioButton(markLabel[i]);		markCanvas[i] = new Canvas();		markCanvas[i].setBackground(color[i]);		markCanvas[i].setSize(CANVAS_SIZE, CANVAS_SIZE);		markSelect.add(markMode[i]);		gbc.gridx = i * 3;		gbc.ipadx = 0;		gbc.anchor = GridBagConstraints.EAST;		JPanel canvasPanel = new JPanel();		canvasPanel.add(markCanvas[i]);		canvasPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));		markModePanel.add(canvasPanel, gbc);		//markModePanel.add(markCanvas[i], gbc);		gbc.gridx += 1;		gbc.anchor = GridBagConstraints.WEST;		markModePanel.add(markMode[i], gbc);		gbc.anchor = GridBagConstraints.CENTER;		gbc.gridx += 1;		gbc.ipadx = 10;		markModePanel.add(new JPanel(), gbc);	}	gbc.gridx = 0;	gbc.gridy = 1;	gbc.gridwidth = 10;	gbc.fill = GridBagConstraints.BOTH;	markPanel.add(markModePanel, gbc);	gbc.fill = GridBagConstraints.NONE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -