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

📄 unitdetailpanel.java

📁 著名的神经网络工具箱
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*************************************************************************

This program is copyrighted. Please refer to COPYRIGHT.txt for the
copyright notice.

This file is part of JavaNNS.

JavaNNS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

JavaNNS is distributed in the hope that it will be useful,
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with JavaNNS; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*************************************************************************/


package javanns;

import java.util.Vector ;
import javax.swing.* ;
import javax.swing.event.* ;
import java.awt.* ;
import java.awt.event.* ;


/*-------------------------- class declaration -------------------------------*/

class UnitDetailPanel extends JPanel implements ActionListener, NetworkListener{
  private Snns snns;
  private Network network;
  private JTextField tName, tAct, tInitAct, tBias, tSubnet, tLayer, tNumbers;
  private NamedComboBox cbxType, cbxActFn, cbxOutFn;
  private JButton bApply, bCancel;
  JInternalFrame frame = null;
  private boolean listen = false, diff_set = false;
  private Unit[] units;
  private static final String DIFF = "different";

  public UnitDetailPanel( Snns snns, boolean own_frame ) {
    this.snns = snns;
    network = snns.network;
    Functions functions = snns.functions;
    if( own_frame ) network.addListener( this );

    GridBagLayout gbl = new GridBagLayout();
    setLayout( gbl );
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets = snns.panel_insets;

    gbc.gridx = gbc.gridy = 0;
    gbc.gridwidth = 2;
    gbc.anchor = gbc.WEST;

    if( own_frame ){
      JLabel lNumbers = new JLabel("Numbers: ");
      gbl.setConstraints( lNumbers, gbc);
      add( lNumbers );

      gbc.gridx = 2;
      gbc.fill = gbc.HORIZONTAL;
      tNumbers = new JTextField( 10 );
      gbl.setConstraints( tNumbers, gbc);
      add( tNumbers );

      gbc.gridy++;
      gbc.gridx = 0;
      gbc.fill = gbc.NONE;

      JLabel lName = new JLabel("Names: ");
      gbl.setConstraints( lName, gbc);
      add( lName );

      gbc.gridx = 2;
      gbc.fill = gbc.HORIZONTAL;
      tName = new JTextField( 10 );
      gbl.setConstraints( tName, gbc);
      add( tName );

      gbc.gridy++;
      gbc.gridx = 0;
      gbc.fill = gbc.NONE;
    }

    JLabel lType = new JLabel("Unit type: ");
    gbl.setConstraints( lType, gbc);
    add( lType );

    gbc.gridx = 2;
    gbc.fill = gbc.HORIZONTAL;
    cbxType = new NamedComboBox();
    cbxType.addItems( UnitTTypes.getTypes() );
    cbxType.setSelectedIndex( 0 );
    gbl.setConstraints( cbxType, gbc);
    add( cbxType );

    gbc.gridy++;
    gbc.gridx = 0;
    gbc.fill = gbc.NONE;
    JLabel lActFn = new JLabel("Activation function: ");
    gbl.setConstraints( lActFn, gbc);
    add( lActFn );

    gbc.gridx = 2;
    gbc.fill = gbc.HORIZONTAL;
    cbxActFn = new NamedComboBox();
    cbxActFn.addItems( functions.getFunctionsOfType( Function.ACTIVATION_FN ) );
    cbxActFn.setSelectedIndex( 0 );
    gbl.setConstraints( cbxActFn, gbc);
    add( cbxActFn );

    gbc.gridy++;
    gbc.gridx = 0;
    gbc.fill = gbc.NONE;
    JLabel lOutFn = new JLabel("Output function: ");
    gbl.setConstraints( lOutFn, gbc);
    add( lOutFn );

    gbc.gridx = 2;
    gbc.fill = gbc.HORIZONTAL;
    cbxOutFn = new NamedComboBox();
    cbxOutFn.addItems( functions.getFunctionsOfType( Function.OUTPUT_FN ) );
    cbxOutFn.setSelectedIndex( 0 );
    gbl.setConstraints( cbxOutFn, gbc);
    add( cbxOutFn );


    if( own_frame ){
      gbc.gridy++;
      gbc.gridx = 0;
      gbc.fill = gbc.NONE;
      JLabel lAct = new JLabel("Activation: ");
      gbl.setConstraints( lAct, gbc);
      add( lAct );

      gbc.gridx = 2;
      gbc.fill = gbc.HORIZONTAL;
      tAct = new JTextField( "0.0", 10 );
      gbl.setConstraints( tAct, gbc);
      add( tAct );

      gbc.gridy++;
      gbc.gridx = 0;
      gbc.fill = gbc.NONE;
      JLabel lInitAct = new JLabel("Initial activation: ");
      gbl.setConstraints( lInitAct, gbc);
      add( lInitAct );

      gbc.gridx = 2;
      gbc.fill = gbc.HORIZONTAL;
      tInitAct = new JTextField( "0.0", 10 );
      gbl.setConstraints( tInitAct, gbc);
      add( tInitAct );

      gbc.gridy++;
      gbc.gridx = 0;
      gbc.fill = gbc.NONE;
      JLabel lBias = new JLabel("Bias: ");
      gbl.setConstraints( lBias, gbc);
      add( lBias );

      gbc.gridx = 2;
      gbc.fill = gbc.HORIZONTAL;
      tBias = new JTextField( "0.0", 10 );
      gbl.setConstraints( tBias, gbc);
      add( tBias );
    }

    gbc.gridwidth = 1;

    gbc.gridy++;
    gbc.gridx = 0;
    gbc.fill = gbc.NONE;
    gbc.anchor = gbc.EAST;
    JLabel lLayer = new JLabel("Layer number: ");
    gbl.setConstraints( lLayer, gbc);
    add( lLayer );

    gbc.gridx = 1;
    tLayer = new JTextField( String.valueOf( network.getMaxLayerNo() + 1 ), 4 );
    gbl.setConstraints( tLayer, gbc);
    add( tLayer );

    gbc.gridx = 2;
    gbc.anchor = gbc.EAST;
    JLabel lSubnet = new JLabel("Subnet number: ");
    gbl.setConstraints( lSubnet, gbc);
    add( lSubnet );

    gbc.gridx = 3;
    gbc.anchor = gbc.WEST;
    tSubnet = new JTextField( "0", 4 );
    gbl.setConstraints( tSubnet, gbc);
    add( tSubnet );

    gbc.gridwidth = 2;
    gbc.anchor = gbc.CENTER;
    if( own_frame ){
      gbc.gridy++;
      gbc.gridx = 0;
      bApply = new JButton("Apply");
      bApply.addActionListener( this );
      gbl.setConstraints( bApply, gbc);
      add( bApply );

      gbc.gridx = 2;
      bCancel = new JButton("Close");
      bCancel.addActionListener( this );
      gbl.setConstraints( bCancel, gbc);
      add( bCancel );
    }

    if( own_frame ){
      frame = new JInternalFrame("Edit units", false, false, false, false){
        public void dispose(){ close(); }
      };
      frame.addInternalFrameListener(
        new InternalFrameAdapter(){
          public void internalFrameClosed(InternalFrameEvent e) { close(); }
        }
      );
      frame.setContentPane( this );
      frame.pack();
      frame.setVisible( false );
    }
  }

/*-------------------------- public methods ----------------------------------*/
  /**
   * shows the unit details to the currently selected unit
   * only to use, when the panel was constructed with own frame
   *
   * @return <code>true<\code> if it was possible
   */
  public boolean showDetails(){
    Unit[] units = network.getSelectedUnits();
    return showDetails( units );
  }
  /**
   * shows the unit details to certain units
   * only to use, when panel was constructed with own frame
   *
   * @return <code>true<\code> if it was possible
   */
  public boolean showDetails( Unit[] us ){
    if( us.length < 1 ) return false;
    units = us;
    listen = true;

    String num = String.valueOf( units[0].getNumber() );
    for( int i=1; i<units.length; i++ )
      num += ";" + String.valueOf( units[i].getNumber() );
    tNumbers.setText( num );

    if( units.length == 1 ){
      Unit unit = units[0];
      tName.setText( unit.getName() );
      cbxType.setSelectedIndex( unit.getType() );
      cbxActFn.setSelectedItem( unit.getActFnName() );
      cbxOutFn.setSelectedItem( unit.getOutFnName() );
      tAct.setText( String.valueOf( unit.getActivation() ) );
      tInitAct.setText( String.valueOf( unit.getInitAct() ) );
      tBias.setText( String.valueOf( unit.getBias() ) );
      tLayer.setText( String.valueOf( unit.getLayer() ) );
      tSubnet.setText( String.valueOf( unit.getSubnetNo() ) );

    }
    else {
      if( !diff_set ){
        cbxType.addItem( DIFF, null );
        cbxActFn.addItem( DIFF, null );
        cbxOutFn.addItem( DIFF, null );
        diff_set = true;
      }
      boolean dname = false, dtype = false, dactfn = false, doutfn = false,
              dact = false, dinit = false, dbias = false, dlayer = false,
              dsubnet = false;
      UnitData data = new UnitData( units[0] );

      for( int i=1; i<units.length; i++ ){

⌨️ 快捷键说明

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