Re: Combobox how to disable edit but allow select
 
Michael Rauscher wrote:
John_Woo schrieb:
dnasmars@gmail.com wrote:
try this
public class MyComboBox extends JComboBox implements ActionListener  {
    public MyComboBox() {
                addItem("a");
 >>                 addItem("b");
                addItem("c");
                setEditable( false );
                addActionListener( this); //line A
    }
    public void actionPerformed(ActionEvent e) {
        System.out.println(" this is ugly ");
        this.setForeground(Color.white);
    }
}
I hope this helps
That's it! Thank you.
Color.black is better.
I don't know what you're doing but I know it must be something strange ;)
Michael's example (using an static inner class ) is fine, just didn't
understand why for standalone class, we have to explixitly set the
foreend color.
You do *not* need to. It doesn't make any difference if one uses a
static inner class or a top level class:
import java.awt.event.*;
import javax.swing.*;
     class MyComboBox extends JComboBox implements ActionListener {
         public void actionPerformed( ActionEvent e ) {
             System.out.println( "Action" );
         }
         public MyComboBox() {
             addItem("a");
             addItem("b");
             addItem("c");
             setEditable( false );
             addActionListener( this );
         }
     }
public class Test  {
     public static final void main( String args[] ) throws Exception {
         JFrame frame = new JFrame("Test");
         frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
         frame.setContentPane( new MyComboBox() );
         frame.pack();
         frame.setVisible( true );
     }
}
Thanks Michael,
if MyComboBox is as following (without overwrite actionPerformed
method)
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class Test  {
     public static final void main( String args[] ) throws Exception {
         JFrame frame = new JFrame("Test");
         frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
         MyComboBox my = new MyComboBox();
         frame.setContentPane( my );
         frame.pack();
         frame.setVisible( true );
     }
}
class MyComboBox extends JComboBox implements ActionListener
{
        MyComboBox()
        {
                addItem("a");
                addItem("b");
                addItem("c");
                setEditable( false );
                addActionListener( this); //line A
        }
}
then once selecting an item, the field always displays blank. I still
have no idea about it.
John