通过字符串调用方法得到结果及动态创建Swing组件和布局

public class PageUtils {

	public static String getResultByName(String text, Object object) {
		int index = 0;
		int indexend = 0;
		while ((index = text.indexOf("{", indexend)) >= 0 && text.length() > 3) {
			indexend = text.indexOf("}", index + 1);
			if (indexend > index) {
				String replace = text.substring(index, indexend + 1);
				String classmtd = replace.substring(1, replace.length() - 1);
				int classindex = classmtd.indexOf(".");
				if (classindex > 0) {
					String classname = classmtd.substring(0, classindex);
					String method = classmtd.substring(classindex + 1);
					try {
						Field[] field = object.getClass().getDeclaredFields();
						for (Field f : field) {
							if (f.getName().equals(classname)) {
								if (!f.isAccessible()) {
									f.setAccessible(true);
								}
								Object obj = f.get(object);
								Method[] methods = obj.getClass().getMethods();
								for (Method m : methods) {
									if (m.getName().equals(method)) {
										Object instead = m.invoke(obj);
										if(instead==null){
											instead = "";
										}
										text = instead.toString();
										indexend = 0;
										break;
									}
								}
								break;
							}
						}
					} catch (Exception ex) {
						ex.printStackTrace();
					}
				}
			}
		}
		return text;
	}
	
	public static void setSpinnerLayout(List<AutoSpinnerItem> list, JPanel panel,
			Object object) {
		panel.setLayout(new java.awt.BorderLayout());
		int index = 2;
		if (list.size() % 2 == 0) {
			index = list.size() / 2;
		} else {
			index = list.size() / 2 + 1;
		}
		JPanel leftPanel = new JPanel();
		JPanel rightPanel = new JPanel();

		// 左边面板
		GroupLayout layout = new GroupLayout(leftPanel);
		leftPanel.setLayout(layout);
		layout.setAutoCreateGaps(true);
		layout.setAutoCreateContainerGaps(true);

		GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
		GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();

		GroupLayout.ParallelGroup p1 = layout
				.createParallelGroup(Alignment.TRAILING);
		GroupLayout.ParallelGroup p2 = layout
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p3 = layout
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p4 = layout
				.createParallelGroup(Alignment.LEADING);

		// 第一列
		for (int i = 0; i < index; i++) {
			AALabel caption1 = new AALabel();
			double minValue1 = VolUtil.parseDouble(PageUtils.getResultByName(list.get(i).getMinValue(),object));
			double maxValue1 = VolUtil.parseDouble(PageUtils.getResultByName(list.get(i).getMaxValue(),object));
			double step1 = VolUtil.parseDouble(list.get(i).getStep());
			double nvalue1 = VolUtil.parseDouble(PageUtils.getResultByName(list.get(i).getValue(),object));
			AALabel unit1 = new AALabel();
			final AAButton button1 = new AAButton();
			button1.setEnabled(list.get(i).isEnable());
			final JSpinner value1 = ComponentFactory.createNumberSpinner(minValue1,maxValue1, step1,nvalue1);
			value1.addChangeListener(new ChangeListener() {
				@Override
				public void stateChanged(ChangeEvent e) {
					button1.setEnabled(true);
				}
			});
			caption1.setText(list.get(i).getCaption());
			unit1.setText(list.get(i).getUnit());
			button1.setText("message.apply");
			button1.setName(list.get(i).getButtonName());
			button1.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					if(!SolarPowerTray.isLogin){
						new LoginJDialog(new Frame(),true);
						return;
					}
					AbstractProcessor currentProcessor = GlobalProcessors.getCurrentProcessor();
					if(currentProcessor!=null){
						button1.setEnabled(false);
						String name = button1.getName();
						boolean result = false;
						String value = value1.getValue().toString();
						if(name.equals("GridOutputLowV")){
							result = currentProcessor.executeControl("setGOLV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("GridOutputHighV")){
							result = currentProcessor.executeControl("setGOHV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("GridOutputLowF")){
							result = currentProcessor.executeControl("setGOLF", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("GridOutputHighF")){
							result = currentProcessor.executeControl("setGOHF", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("MaxOutputPower")){
							result = currentProcessor.executeControl("setOPMP", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("MPPPVN")){
							result = currentProcessor.executeControl("setPVN", new Object[]{currentProcessor.getProtocol().getSerialNo(),Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("WaitingTime")){
							result = currentProcessor.executeControl("setGridWaittime", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("LowestLimtInputV")){
							result = currentProcessor.executeControl("setPVIPLV", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("UpperLimitInputV")){
							result = currentProcessor.executeControl("setPVIPHV", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("LowVoltage")){
							result = currentProcessor.executeControl("setMPPTLV", new Object[]{currentProcessor.getProtocol().getSerialNo(),Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("HighVoltage")){
							result = currentProcessor.executeControl("setMPPTHV", new Object[]{currentProcessor.getProtocol().getSerialNo(),Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("GridInputAverageHighV")){
							result = currentProcessor.executeControl("setGILTHV", new Object[]{currentProcessor.getProtocol().getSerialNo(),Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("GridInputHighV")){
							result = currentProcessor.executeControl("setPHV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("GridInputLowV")){
							result = currentProcessor.executeControl("setPLV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("GridInputHighF")){
							result = currentProcessor.executeControl("setPGF", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("GridInputLowF")){
							result = currentProcessor.executeControl("setPSF", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("ACInputLowV")){
							result = currentProcessor.executeControl("setGOLV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("ACInputHighV")){
							result = currentProcessor.executeControl("setGOHV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("ACInputLowF")){
							result = currentProcessor.executeControl("setGOLF", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("ACInputHighF")){
							result = currentProcessor.executeControl("setGOHF", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("MaxChargingCurrent")){
							result = currentProcessor.executeControl("setMaxChargingCurrent", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("MaxChargingVoltage")){
							result = currentProcessor.executeControl("setMaxChargingVoltage", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}
						if(result){
							DisplayMessage.showInfoDialog("message.setTrue");
						}else{
							DisplayMessage.showErrorDialog("message.setFalse");
						}
						button1.setEnabled(true);
					}
				}
			});

			p1.addComponent(caption1);
			p2.addComponent(value1,60,60,60);
			p3.addComponent(unit1);
			p4.addComponent(button1);

			vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
					.addComponent(caption1).addComponent(value1).addComponent(
							unit1).addComponent(button1));
			vGroup.addGap(15, 15, 15);
		}
		
		//lcd time start
		AALabel caption = new AALabel();
		caption.setText("message.setLCD[:]");
		AALabel unit = new AALabel();
		unit.setText("message.seconds");
		final AAButton button = new AAButton();
		final AAComboBox comboBox = new AAComboBox();
		comboBox.setModel(new String[]{"None","30","60","300","600"});
		comboBox.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				button.setEnabled(true);				
			}
		});
		AbstractProcessor currentProcessor = GlobalProcessors.getCurrentProcessor();
		if(currentProcessor!=null){
			ConfigData configdata = (ConfigData) currentProcessor.getBeanBag().getBean(
					Constants.BEAN_CONFIGDATA);
			String selectIndex = configdata.getLcdSleepTime();
			if(selectIndex.equals("00")){
				comboBox.setSelectedIndex(0);
			}else if(selectIndex.equals("01")){
				comboBox.setSelectedIndex(1);
			}else if(selectIndex.equals("02")){
				comboBox.setSelectedIndex(2);
			}else if(selectIndex.equals("10")){
				comboBox.setSelectedIndex(3);
			}else if(selectIndex.equals("20")){
				comboBox.setSelectedIndex(4);
			}
		}
		button.setText("message.apply");
		button.setEnabled(false);
		button.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				if(!SolarPowerTray.isLogin){
					new LoginJDialog(new Frame(),true);
					return;
				}
				AbstractProcessor currentProcessor = GlobalProcessors.getCurrentProcessor();
				if(currentProcessor!=null){
					button.setEnabled(false);
					int index = comboBox.getSelectedIndex();
					String values = "02";
					if(index==0){
						values = "00";
					}else if(index==1){
						values = "01";
					}else if(index==2){
						values = "02";
					}else if(index==3){
						values = "10";
					}else if(index==4){
						values = "20";
					}
					boolean result = currentProcessor.executeControl("setLCD", new String[]{values});
					if(result){
						DisplayMessage.showInfoDialog("message.setTrue");
					}else{
						DisplayMessage.showErrorDialog("message.setFalse");
					}
					button.setEnabled(true);
				}
			}
		});
		p1.addComponent(caption);
		p2.addComponent(comboBox,60,60,60);
		p3.addComponent(unit);
		p4.addComponent(button);
		vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
				.addComponent(caption).addComponent(comboBox).addComponent(
						unit).addComponent(button));
		vGroup.addGap(15, 15, 15);
		//end
		
		hGroup.addGap(40, 40, 40);
		hGroup.addGroup(p1);
		hGroup.addGroup(p2);
		hGroup.addGroup(p3);
		hGroup.addGroup(p4);
		hGroup.addGap(20, 20, 20);

		layout.setHorizontalGroup(hGroup);
		layout.setVerticalGroup(vGroup);

		// 右边面板
		GroupLayout layout2 = new GroupLayout(rightPanel);
		rightPanel.setLayout(layout2);
		layout2.setAutoCreateGaps(true);
		layout2.setAutoCreateContainerGaps(true);

		GroupLayout.SequentialGroup hGroup2 = layout2.createSequentialGroup();
		GroupLayout.SequentialGroup vGroup2 = layout2.createSequentialGroup();

		GroupLayout.ParallelGroup p5 = layout2
				.createParallelGroup(Alignment.TRAILING);
		GroupLayout.ParallelGroup p6 = layout2
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p7 = layout2
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p8 = layout2
				.createParallelGroup(Alignment.LEADING);

		// 第二列
		for (int j = index; j < list.size(); j++) {
			AALabel caption2 = new AALabel();
			double minValue2 = VolUtil.parseDouble(PageUtils.getResultByName(list.get(j).getMinValue(),object));
			double maxValue2 = VolUtil.parseDouble(PageUtils.getResultByName(list.get(j).getMaxValue(),object));
			double step2 = VolUtil.parseDouble(list.get(j).getStep());
			double nvalue2 = VolUtil.parseDouble(PageUtils.getResultByName(list.get(j).getValue(),object));
			AALabel unit2 = new AALabel();
			final AAButton button2 = new AAButton();
			button2.setEnabled(list.get(j).isEnable());
			final JSpinner value2 = ComponentFactory.createNumberSpinner(minValue2,maxValue2, step2,nvalue2);
			value2.addChangeListener(new ChangeListener() {
				@Override
				public void stateChanged(ChangeEvent e) {
					button2.setEnabled(true);
				}
			});
			caption2.setText(list.get(j).getCaption());
			unit2.setText(list.get(j).getUnit());
			button2.setText("message.apply");
			button2.setName(list.get(j).getButtonName());
			button2.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					if(!SolarPowerTray.isLogin){
						new LoginJDialog(new Frame(),true);
						return;
					}
					AbstractProcessor currentProcessor = GlobalProcessors.getCurrentProcessor();
					if(currentProcessor!=null){
						button2.setEnabled(false);
						String name = button2.getName();
						boolean result = false;
						String value = value2.getValue().toString();
						if(name.equals("GridOutputLowV")){
							result = currentProcessor.executeControl("setGOLV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("GridOutputHighV")){
							result = currentProcessor.executeControl("setGOHV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("GridOutputLowF")){
							result = currentProcessor.executeControl("setGOLF", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("GridOutputHighF")){
							result = currentProcessor.executeControl("setGOHF", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("MaxOutputPower")){
							result = currentProcessor.executeControl("setOPMP", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("MPPPVN")){
							result = currentProcessor.executeControl("setPVN", new Object[]{currentProcessor.getProtocol().getSerialNo(),Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("WaitingTime")){
							result = currentProcessor.executeControl("setGridWaittime", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("LowestLimtInputV")){
							result = currentProcessor.executeControl("setPVIPLV", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("UpperLimitInputV")){
							result = currentProcessor.executeControl("setPVIPHV", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("LowVoltage")){
							result = currentProcessor.executeControl("setMPPTLV", new Object[]{currentProcessor.getProtocol().getSerialNo(),Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("HighVoltage")){
							result = currentProcessor.executeControl("setMPPTHV", new Object[]{currentProcessor.getProtocol().getSerialNo(),Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("GridInputAverageHighV")){
							result = currentProcessor.executeControl("setGILTHV", new Object[]{currentProcessor.getProtocol().getSerialNo(),Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("GridInputHighV")){
							result = currentProcessor.executeControl("setPHV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("GridInputLowV")){
							result = currentProcessor.executeControl("setPLV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("GridInputHighF")){
							result = currentProcessor.executeControl("setPGF", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("GridInputLowF")){
							result = currentProcessor.executeControl("setPSF", new Object[]{Math.round(VolUtil.parseFloat(value))});
						}else if(name.equals("ACInputLowV")){
							result = currentProcessor.executeControl("setGOLV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("ACInputHighV")){
							result = currentProcessor.executeControl("setGOHV", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("ACInputLowF")){
							result = currentProcessor.executeControl("setGOLF", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("ACInputHighF")){
							result = currentProcessor.executeControl("setGOHF", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("MaxChargingCurrent")){
							result = currentProcessor.executeControl("setMaxChargingCurrent", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}else if(name.equals("MaxChargingVoltage")){
							result = currentProcessor.executeControl("setMaxChargingVoltage", new Object[]{VolUtil.round(VolUtil.parseDouble(value),3)});
						}
						if(result){
							DisplayMessage.showInfoDialog("message.setTrue");
						}else{
							DisplayMessage.showErrorDialog("message.setFalse");
						}
						button2.setEnabled(true);
					}
				}
			});
			
			p5.addComponent(caption2);
			p6.addComponent(value2,60,60,60);
			p7.addComponent(unit2);
			p8.addComponent(button2);

			vGroup2.addGroup(layout2.createParallelGroup(Alignment.BASELINE)
					.addComponent(caption2).addComponent(value2).addComponent(
							unit2).addComponent(button2));
			vGroup2.addGap(15, 15, 15);
		}
		hGroup2.addGap(20, 20, 20);
		hGroup2.addGroup(p5);
		hGroup2.addGroup(p6);
		hGroup2.addGroup(p7);
		hGroup2.addGroup(p8);
		hGroup2.addGap(40, 40, 40);

		layout2.setHorizontalGroup(hGroup2);
		layout2.setVerticalGroup(vGroup2);
		panel.add(leftPanel, java.awt.BorderLayout.CENTER);
		panel.add(rightPanel, java.awt.BorderLayout.EAST);
	}

	protected AbstractButton valueLabel4;
	
	public static void setRadioLayout(List<AutoRadioItem> list, JPanel panel,
			Object object) {
		panel.setLayout(new java.awt.BorderLayout());
		int index = 2;
		if (list.size() % 2 == 0) {
			index = list.size() / 2;
		} else {
			index = list.size() / 2 + 1;
		}
		JPanel leftPanel = new JPanel();
		JPanel rightPanel = new JPanel();

		// 左边面板
		GroupLayout layout = new GroupLayout(leftPanel);
		leftPanel.setLayout(layout);
		layout.setAutoCreateGaps(true);
		layout.setAutoCreateContainerGaps(true);

		GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
		GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();

		GroupLayout.ParallelGroup p1 = layout
				.createParallelGroup(Alignment.TRAILING);
		GroupLayout.ParallelGroup p2 = layout
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p3 = layout
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p4 = layout
				.createParallelGroup(Alignment.LEADING);

		// 第一列
		for (int i = 0; i < index; i++) {
			AALabel caption1 = new AALabel();
			final AARadioButton valueLabel1 = new AARadioButton();
			final AARadioButton valueLabel2 = new AARadioButton();
			final AAButton button1 = new AAButton();
			button1.setEnabled(list.get(i).isEnable());
			caption1.setText(list.get(i).getCaption());
			valueLabel1.setText(list.get(i).getRadioLabel1());
			valueLabel2.setText(list.get(i).getRadioLabel2());
			boolean value1 = VolUtil.parseBoolean(PageUtils.getResultByName(list.get(i).getValue(),
					object));
			if(value1){
				valueLabel1.setSelected(true);
				valueLabel2.setSelected(false);
			}else{
				valueLabel1.setSelected(false);
				valueLabel2.setSelected(true);
			}
			valueLabel1.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					valueLabel1.setSelected(true);
					valueLabel2.setSelected(false);
					button1.setEnabled(true);
				}
	        });
			valueLabel2.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					valueLabel1.setSelected(false);
					valueLabel2.setSelected(true);
					button1.setEnabled(true);
				}
	        });
			button1.setText("message.apply");
			button1.setName(list.get(i).getButtonName());
			button1.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					if(!SolarPowerTray.isLogin){
						new LoginJDialog(new Frame(),true);
						return;
					}
					AbstractProcessor currentProcessor = GlobalProcessors.getCurrentProcessor();
					if(currentProcessor!=null){
						button1.setEnabled(false);
						String name = button1.getName();
						boolean result = false;
						if(name.equals("CapableA")){
							if(valueLabel1.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"A",true});
							}else if(valueLabel2.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"A",false});
							}
						}else if(name.equals("CapableB")){
							if(valueLabel1.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"B",true});
							}else if(valueLabel2.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"B",false});
							}
						}else if(name.equals("CapableP")){
							if(valueLabel1.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"P",true});
							}else if(valueLabel2.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"P",false});
							}
						}
						if(result){
							DisplayMessage.showInfoDialog("message.setTrue");
						}else{
							DisplayMessage.showErrorDialog("message.setFalse");
						}
						button1.setEnabled(true);
					}
				}
			});

			p1.addComponent(caption1);
			p2.addComponent(valueLabel1);
			p3.addComponent(valueLabel2);
			p4.addComponent(button1);

			vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
					.addComponent(caption1).addComponent(valueLabel1).addComponent(
							valueLabel2).addComponent(button1));
			vGroup.addGap(15, 15, 15);
		}
		hGroup.addGap(40, 40, 40);
		hGroup.addGroup(p1);
		hGroup.addGroup(p2);
		hGroup.addGroup(p3);
		hGroup.addGroup(p4);
		hGroup.addGap(20, 20, 20);

		layout.setHorizontalGroup(hGroup);
		layout.setVerticalGroup(vGroup);

		// 右边面板
		GroupLayout layout2 = new GroupLayout(rightPanel);
		rightPanel.setLayout(layout2);
		layout2.setAutoCreateGaps(true);
		layout2.setAutoCreateContainerGaps(true);

		GroupLayout.SequentialGroup hGroup2 = layout2.createSequentialGroup();
		GroupLayout.SequentialGroup vGroup2 = layout2.createSequentialGroup();

		GroupLayout.ParallelGroup p5 = layout2
				.createParallelGroup(Alignment.TRAILING);
		GroupLayout.ParallelGroup p6 = layout2
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p7 = layout2
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p8 = layout2
			.createParallelGroup(Alignment.LEADING);

		// 第二列
		for (int j = index; j < list.size(); j++) {
			AALabel caption2 = new AALabel();
			final AARadioButton valueLabel3 = new AARadioButton();
			final AARadioButton valueLabel4 = new AARadioButton();
			final AAButton button2 = new AAButton();
			button2.setEnabled(list.get(j).isEnable());
			caption2.setText(list.get(j).getCaption());
			valueLabel3.setText(list.get(j).getRadioLabel1());
			valueLabel4.setText(list.get(j).getRadioLabel2());
			boolean value2 = VolUtil.parseBoolean(PageUtils.getResultByName(list.get(j).getValue(),
					object));
			if(value2){
				valueLabel3.setSelected(true);
				valueLabel4.setSelected(false);
			}else{
				valueLabel3.setSelected(false);
				valueLabel4.setSelected(true);
			}
			valueLabel3.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					valueLabel3.setSelected(true);
					valueLabel4.setSelected(false);
					button2.setEnabled(true);
				}
	        });
			valueLabel4.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					valueLabel3.setSelected(false);
					valueLabel4.setSelected(true);
					button2.setEnabled(true);
				}
	        });
			button2.setText("message.apply");
			button2.setName(list.get(j).getButtonName());
			button2.addActionListener(new ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					if(!SolarPowerTray.isLogin){
						new LoginJDialog(new Frame(),true);
						return;
					}
					AbstractProcessor currentProcessor = GlobalProcessors.getCurrentProcessor();
					if(currentProcessor!=null){
						button2.setEnabled(false);
						String name = button2.getName();
						boolean result = false;
						if(name.equals("CapableA")){
							if(valueLabel3.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"A",true});
							}else if(valueLabel4.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"A",false});
							}
						}else if(name.equals("CapableB")){
							if(valueLabel3.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"B",true});
							}else if(valueLabel4.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"B",false});
							}
						}else if(name.equals("CapableP")){
							if(valueLabel3.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"P",true});
							}else if(valueLabel4.isSelected()){
								result = currentProcessor.executeControl("setCapability", new Object[]{"P",false});
							}
						}
						if(result){
							DisplayMessage.showInfoDialog("message.setTrue");
						}else{
							DisplayMessage.showErrorDialog("message.setFalse");
						}
						button2.setEnabled(true);
					}
				}
			});
			
			p5.addComponent(caption2);
			p6.addComponent(valueLabel3);
			p7.addComponent(valueLabel4);
			p8.addComponent(button2);

			vGroup2.addGroup(layout2.createParallelGroup(Alignment.BASELINE)
					.addComponent(caption2).addComponent(valueLabel3).addComponent(valueLabel4).addComponent(
							button2));
			vGroup2.addGap(15, 15, 15);
		}
		hGroup2.addGap(20, 20, 20);
		hGroup2.addGroup(p5);
		hGroup2.addGroup(p6);
		hGroup2.addGroup(p7);
		hGroup2.addGroup(p8);
		hGroup2.addGap(40, 40, 40);

		layout2.setHorizontalGroup(hGroup2);
		layout2.setVerticalGroup(vGroup2);
		panel.add(leftPanel, java.awt.BorderLayout.CENTER);
		panel.add(rightPanel, java.awt.BorderLayout.EAST);
	}

	public static void setInfoLayout(List<AutoLabelItem> list, JPanel panel,
			Object object) {
		panel.setLayout(new java.awt.BorderLayout());
		int index = 2;
		if (list.size() % 2 == 0) {
			index = list.size() / 2;
		} else {
			index = list.size() / 2 + 1;
		}
		JPanel leftPanel = new JPanel();
		JPanel rightPanel = new JPanel();

		// 左边面板
		GroupLayout layout = new GroupLayout(leftPanel);
		leftPanel.setLayout(layout);
		layout.setAutoCreateGaps(true);
		layout.setAutoCreateContainerGaps(true);

		GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
		GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();

		GroupLayout.ParallelGroup p1 = layout
				.createParallelGroup(Alignment.TRAILING);
		GroupLayout.ParallelGroup p2 = layout
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p3 = layout
				.createParallelGroup(Alignment.LEADING);

		// 第一列
		for (int i = 0; i < index; i++) {
			AALabel caption1 = new AALabel();
			AALabel value1 = new AALabel();
			AALabel unit1 = new AALabel();
			caption1.setText(list.get(i).getCaption());
			value1.setText(PageUtils.getResultByName(list.get(i).getValue(),
					object));
			unit1.setText(list.get(i).getUnit());

			p1.addComponent(caption1);
			p2.addComponent(value1);
			p3.addComponent(unit1);

			vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
					.addComponent(caption1).addComponent(value1).addComponent(
							unit1));
			vGroup.addGap(15, 15, 15);
		}
		hGroup.addGap(40, 40, 40);
		hGroup.addGroup(p1);
		hGroup.addGroup(p2);
		hGroup.addGroup(p3);
		hGroup.addGap(20, 20, 20);

		layout.setHorizontalGroup(hGroup);
		layout.setVerticalGroup(vGroup);

		// 右边面板
		GroupLayout layout2 = new GroupLayout(rightPanel);
		rightPanel.setLayout(layout2);
		layout2.setAutoCreateGaps(true);
		layout2.setAutoCreateContainerGaps(true);

		GroupLayout.SequentialGroup hGroup2 = layout2.createSequentialGroup();
		GroupLayout.SequentialGroup vGroup2 = layout2.createSequentialGroup();

		GroupLayout.ParallelGroup p4 = layout2
				.createParallelGroup(Alignment.TRAILING);
		GroupLayout.ParallelGroup p5 = layout2
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p6 = layout2
				.createParallelGroup(Alignment.LEADING);

		// 第二列
		for (int j = index; j < list.size(); j++) {
			AALabel caption2 = new AALabel();
			AALabel value2 = new AALabel();
			AALabel unit2 = new AALabel();
			caption2.setText(list.get(j).getCaption());
			value2.setText(PageUtils.getResultByName(list.get(j).getValue(),
					object));
			unit2.setText(list.get(j).getUnit());
			p4.addComponent(caption2);
			p5.addComponent(value2);
			p6.addComponent(unit2);

			vGroup2.addGroup(layout2.createParallelGroup(Alignment.BASELINE)
					.addComponent(caption2).addComponent(value2).addComponent(
							unit2));
			vGroup2.addGap(15, 15, 15);
		}
		hGroup2.addGap(20, 20, 20);
		hGroup2.addGroup(p4);
		hGroup2.addGroup(p5);
		hGroup2.addGroup(p6);
		hGroup2.addGap(40, 40, 40);

		layout2.setHorizontalGroup(hGroup2);
		layout2.setVerticalGroup(vGroup2);
		panel.add(leftPanel, java.awt.BorderLayout.CENTER);
		panel.add(rightPanel, java.awt.BorderLayout.EAST);
	}
	
	public static void setTextLayout(List<AutoLabelItem> list, JPanel panel,
			Object object) {
		panel.setLayout(new java.awt.BorderLayout());
		int index = 2;
		if (list.size() % 2 == 0) {
			index = list.size() / 2;
		} else {
			index = list.size() / 2 + 1;
		}
		JPanel leftPanel = new JPanel();
		JPanel rightPanel = new JPanel();

		// 左边面板
		GroupLayout layout = new GroupLayout(leftPanel);
		leftPanel.setLayout(layout);
		layout.setAutoCreateGaps(true);
		layout.setAutoCreateContainerGaps(true);

		GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
		GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();

		GroupLayout.ParallelGroup p1 = layout
				.createParallelGroup(Alignment.TRAILING);
		GroupLayout.ParallelGroup p2 = layout
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p3 = layout
				.createParallelGroup(Alignment.LEADING);

		// 第一列
		for (int i = 0; i < index; i++) {
			AALabel caption1 = new AALabel();
			AATextField value1 = new AATextField();
			AALabel unit1 = new AALabel();
			caption1.setText(list.get(i).getCaption());
			value1.setText(PageUtils.getResultByName(list.get(i).getValue(),
					object));
			unit1.setText(list.get(i).getUnit());

			p1.addComponent(caption1);
			p2.addComponent(value1,50,50,50);
			p3.addComponent(unit1);

			vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE)
					.addComponent(caption1).addComponent(value1).addComponent(
							unit1));
			vGroup.addGap(15, 15, 15);
		}
		hGroup.addGap(40, 40, 40);
		hGroup.addGroup(p1);
		hGroup.addGroup(p2);
		hGroup.addGroup(p3);
		hGroup.addGap(20, 20, 20);

		layout.setHorizontalGroup(hGroup);
		layout.setVerticalGroup(vGroup);

		// 右边面板
		GroupLayout layout2 = new GroupLayout(rightPanel);
		rightPanel.setLayout(layout2);
		layout2.setAutoCreateGaps(true);
		layout2.setAutoCreateContainerGaps(true);

		GroupLayout.SequentialGroup hGroup2 = layout2.createSequentialGroup();
		GroupLayout.SequentialGroup vGroup2 = layout2.createSequentialGroup();

		GroupLayout.ParallelGroup p4 = layout2
				.createParallelGroup(Alignment.TRAILING);
		GroupLayout.ParallelGroup p5 = layout2
				.createParallelGroup(Alignment.LEADING);
		GroupLayout.ParallelGroup p6 = layout2
				.createParallelGroup(Alignment.LEADING);

		// 第二列
		for (int j = index; j < list.size(); j++) {
			AALabel caption2 = new AALabel();
			AATextField value2 = new AATextField();
			AALabel unit2 = new AALabel();
			caption2.setText(list.get(j).getCaption());
			value2.setText(PageUtils.getResultByName(list.get(j).getValue(),
					object));
			unit2.setText(list.get(j).getUnit());
			p4.addComponent(caption2);
			p5.addComponent(value2,50,50,50);
			p6.addComponent(unit2);

			vGroup2.addGroup(layout2.createParallelGroup(Alignment.BASELINE)
					.addComponent(caption2).addComponent(value2).addComponent(
							unit2));
			vGroup2.addGap(15, 15, 15);
		}
		hGroup2.addGap(20, 20, 20);
		hGroup2.addGroup(p4);
		hGroup2.addGroup(p5);
		hGroup2.addGroup(p6);
		hGroup2.addGap(40, 40, 40);

		layout2.setHorizontalGroup(hGroup2);
		layout2.setVerticalGroup(vGroup2);
		panel.add(leftPanel, java.awt.BorderLayout.CENTER);
		panel.add(rightPanel, java.awt.BorderLayout.EAST);
	}
}
//不懂请留言。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值