Cursor eines disableden JTextField setzten

xanadoo

Erfahrenes Mitglied
Hallo zusammen,
ich habe ein Problem.

Ich möchte den Cursor eines JTextFields ändern.
Normalerweise klappt das ja auch wunderbar aber ich will den Cursor eines Feldes ändern, welches disabled ist.

Ich glaube, dass dies früher einmal ging. Jetzt scheint es nicht mehr zu gehen.
Auf jeden Fall klappt dies in meinem Codebeispiel nicht.

Kennt jemand einen Weg, wie man das trotzdem schafft ohne das disabled Attrubut zu ändern?

Besten Dank für jeden Tipp.


Code:
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JPanel;
import java.awt.GridBagLayout;
import javax.swing.JTextField;

import java.awt.Cursor;
import java.awt.GridBagConstraints;
import java.awt.Insets;

public class TestFrame extends JFrame {

	private JPanel jPanel = null;
	private JTextField disabledField = null;
	private JTextField enabledField = null;

	public TestFrame() {
		super();
		initialize();
		pack();
	}

	private void initialize() {
		this.setSize(new Dimension(439, 363));
		this.setContentPane(getJPanel());
		this.setTitle("Test Frame");

	}

	private JPanel getJPanel() {
		if (jPanel == null) {
			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
			gridBagConstraints1.fill = GridBagConstraints.VERTICAL;
			gridBagConstraints1.gridy = 1;
			gridBagConstraints1.weightx = 1.0;
			gridBagConstraints1.insets = new Insets(10, 10, 10, 10);
			gridBagConstraints1.gridx = 0;
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.fill = GridBagConstraints.VERTICAL;
			gridBagConstraints.gridy = 0;
			gridBagConstraints.weightx = 1.0;
			gridBagConstraints.insets = new Insets(10, 10, 0, 10);
			gridBagConstraints.gridx = 0;
			jPanel = new JPanel();
			jPanel.setLayout(new GridBagLayout());
			jPanel.add(getDisabledField(), gridBagConstraints);
			jPanel.add(getEnabledField(), gridBagConstraints1);
		}
		return jPanel;
	}

	private JTextField getDisabledField() {
		if (disabledField == null) {
			disabledField = new JTextField();
			disabledField.setColumns(20);
			disabledField.setEnabled(false);
			disabledField.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
		}
		return disabledField;
	}

	private JTextField getEnabledField() {
		if (enabledField == null) {
			enabledField = new JTextField();
			enabledField.setColumns(20);
			enabledField.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
		}
		return enabledField;
	}
}
 
Moin!
Der Cursor kann nur gesetzt werden, bzw. wird nur angezeigt, wenn u.a. die Komponente auch aktiviert ist.
Allerdings, bekommt die Komponente ihren Cursor von ihrer übergeordneten Komponente.
D.h. bastel einfach einen Container um das TextFeld, und dann klappt es auch:
Code:
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JPanel;
import java.awt.GridBagLayout;
import javax.swing.JTextField;

import java.awt.Cursor;
import java.awt.GridBagConstraints;
import java.awt.Insets;

public class TestFrame extends JFrame {

    private JPanel jPanel = null;
    private JTextField disabledField = null;
    private JTextField enabledField = null;

    public TestFrame() {
        super();
        initialize();
        pack();
    }

    private void initialize() {
        this.setSize(new Dimension(439, 363));
        this.setContentPane(getJPanel());
        this.setTitle("Test Frame");

    }

    private JPanel getJPanel() {
        if (jPanel == null) {
            GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
            gridBagConstraints1.fill = GridBagConstraints.VERTICAL;
            gridBagConstraints1.gridy = 1;
            gridBagConstraints1.weightx = 1.0;
            gridBagConstraints1.insets = new Insets(10, 10, 10, 10);
            gridBagConstraints1.gridx = 0;
            GridBagConstraints gridBagConstraints = new GridBagConstraints();
            gridBagConstraints.fill = GridBagConstraints.VERTICAL;
            gridBagConstraints.gridy = 0;
            gridBagConstraints.weightx = 1.0;
            gridBagConstraints.insets = new Insets(10, 10, 0, 10);
            gridBagConstraints.gridx = 0;
            jPanel = new JPanel();
            jPanel.setLayout(new GridBagLayout());
            JPanel p = new JPanel();
                        p.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
                        p.add(getDisabledField());
                        jPanel.add(p, gridBagConstraints);
            jPanel.add(getEnabledField(), gridBagConstraints1);
        }
        return jPanel;
    }

    private JTextField getDisabledField() {
        if (disabledField == null) {
            disabledField = new JTextField();
            disabledField.setColumns(20);
            disabledField.setEnabled(false);
                        
        }
        return disabledField;
    }

    private JTextField getEnabledField() {
        if (enabledField == null) {
            enabledField = new JTextField();
            enabledField.setColumns(20);
            enabledField.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
                        
        }
        return enabledField;
    }
        
        
}

*grüssle*
MeinerEiner
 
Zurück