Java Swing focusGained not working

Started by
-1 comments, last by KenWill 8 years, 3 months ago

I did this before and it worked as intended but now i just can't seem to get it working. I know my code is not the problem because i tested it on the same panel and it worked. For me it looks like focusGained function is never called and that's why its not working. Here is the code:


	public void initialize(JPanel editPanel, JPanel propertiesPanel)
	{
		this.editPanel = panel;
		this.propertiesPanel = propertiesPanel;
		
		panel = new JPanel();
		initializeProperties();
		panel.setBounds(0, 0, 340, 340);
		panel.setLayout(null);
		panel.setBorder(BorderFactory.createLineBorder(Color.black, 1));
		panel.addMouseMotionListener(new MouseMotionListener(){

			@Override
			public void mouseDragged(MouseEvent me) {
				xPos = panel.getX() + me.getX() - panel.getWidth()/2;
				yPos = panel.getY() + me.getY() - panel.getHeight()/2;
				
				// CHECK IF OUT OF BOUNDS
				if(xPos < 0)
				{
					xPos = 0;
				}
				else if(xPos >= editPanel.getWidth() - panel.getWidth())
				{
					xPos = editPanel.getWidth() - panel.getWidth();
				}
				
				if(yPos < 0)
				{
					yPos = 0;
				}
				else if(yPos >= editPanel.getHeight() - panel.getHeight())
				{
					yPos = editPanel.getHeight() - panel.getHeight();
				}
				panel.setLocation(xPos, yPos);
				
			}

			@Override
			public void mouseMoved(MouseEvent me) {
				
			}
			
		});
		panel.addFocusListener(new FocusListener(){

			@Override
			public void focusGained(FocusEvent e) {
			//	propertiesPanel.removeAll();
				
				propertiesPanel.add(widthLabel);
				propertiesPanel.add(widthField);
				
				propertiesPanel.add(heightLabel);
				propertiesPanel.add(heightField);
				
				propertiesPanel.add(backgroundColorLabel);
				propertiesPanel.add(backgroundColorField);
				
				propertiesPanel.add(backgroundImageLabel);
				propertiesPanel.add(backgroundImageField);
				
				propertiesPanel.add(transparentCheck);
				
				propertiesPanel.add(borderTypeLabel);
				propertiesPanel.add(borderTypeComboBox);

				propertiesPanel.add(borderWidthLabel);
				propertiesPanel.add(borderWidthField);
				
				propertiesPanel.add(borderRadiusLabel);
				propertiesPanel.add(borderRadiusField);
				
				propertiesPanel.add(paddingLabel);
				propertiesPanel.add(paddingField);
				
				propertiesPanel.repaint();
				
			}

			@Override
			public void focusLost(FocusEvent arg0) {
				// TODO Auto-generated method stub
				
			}
			
		});
		editPanel.add(panel);
		editPanel.repaint();
		
	}
	
	private void initializeProperties()
	{
		widthLabel = new JLabel("Width");
		widthLabel.setBounds(24, 11, 46, 14);
		
		widthField = new JTextField();
		widthField.setBounds(126, 8, 60, 20);
		widthField.setColumns(10);
		
		heightLabel = new JLabel("Height");
		heightLabel.setBounds(24, 36, 46, 14);
		
		heightField = new JTextField();
		heightField.setBounds(126, 33, 60, 20);
		heightField.setColumns(10);
		
		backgroundColorLabel = new JLabel("Background Color");
		backgroundColorLabel.setBounds(10, 61, 86, 14);
		
		backgroundColorField = new JTextField();
		backgroundColorField.setBounds(126, 58, 60, 20);
		backgroundColorField.setColumns(10);
		
		backgroundImageLabel = new JLabel("Background Image");
		backgroundImageLabel.setBounds(10, 86, 101, 14);
		
		backgroundImageField = new JTextField();
		backgroundImageField.setBounds(106, 83, 80, 20);
		backgroundImageField.setColumns(10);
		
		transparentCheck = new JCheckBox("Transparent");
		transparentCheck.setBounds(24, 107, 97, 23);
		
		borderTypeLabel = new JLabel("Border Type");
		borderTypeLabel.setBounds(10, 137, 86, 14);
		
		borderTypeComboBox = new JComboBox();
		borderTypeComboBox.setBounds(106, 134, 80, 20);
		
		borderWidthLabel = new JLabel("Border Width");
		borderWidthLabel.setBounds(10, 162, 63, 14);
		
		borderWidthField = new JTextField();
		borderWidthField.setBounds(126, 159, 60, 20);
		borderWidthField.setColumns(10);
		
		borderRadiusLabel = new JLabel("Border Radius");
		borderRadiusLabel.setBounds(10, 187, 86, 14);
		
		borderRadiusField = new JTextField();
		borderRadiusField.setBounds(126, 184, 60, 20);
		borderRadiusField.setColumns(10);
		
		paddingLabel = new JLabel("Padding");
		paddingLabel.setBounds(10, 212, 46, 14);
		
		paddingField = new JTextField();
		paddingField.setBounds(126, 209, 60, 20);
		paddingField.setColumns(10);
	}

This topic is closed to new replies.

Advertisement