java swing单击按钮隐藏显示JtextField的问题?我只能隐藏JTextfiled,但不能显示出来?急各位帮忙给点源码。

解决方案 »

  1.   

    JTextField jtf = new JTextField(20);隐藏jtf.setVisible(false);
    显示jtf.setVisible(true);
      

  2.   

    你是用JtextField.setVisible(false)设置的隐藏吧,那你可以在再次单击的时候设置
    JtextField.setVisible(true)不就行了吗~~
      

  3.   

    JTextField jtf = new JTextField(); 
    boolean visible = false;
    public void actionPerformed(ActionEvent e){
    jtf.setVisible(visible);
    visible = visible ? false : true;
    }
      

  4.   


    import java.awt.BorderLayout;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextField;
    public class DisplayText extends JFrame{
    JTextField text = new JTextField();
    JButton click = new JButton("Click");
    public DisplayText(){
    super();
    this.setSize(200, 200);
    text.setSize(100, 100);
    this.add(text);
    this.add(click,BorderLayout.SOUTH);
    click.addActionListener(new ActionListener(){ @Override
    public void actionPerformed(ActionEvent e) {
    text.setVisible(!text.isVisible());
    }

    });
    this.setVisible(true);
    }

    public static void main(String[] args){
    new DisplayText();
    }
    }
      

  5.   


    默认是隐藏的,单击那个下拉的才显示,但为什么那样显示不了,各位帮帮忙!public class StackUI extends JFrame{
    JTextField txtfield = new JTextField("afsd");
    ComboBoxModel cbxModel = new DefaultComboBoxModel();
    JComboBox cbx = new JComboBox(cbxModel);
    public StackUI(){
    Container contentPane = this.getContentPane();
    txtfield = new JTextField();
    cbx.addItem("1");
    cbx.addItem("2");
    cbx.setPreferredSize(new Dimension(80,25));
    txtfield.setPreferredSize(new Dimension(100,25));
    txtfield.setVisible(false);
    contentPane.add(cbx);
    contentPane.add(txtfield);
    initListener();
    this.setLayout(new FlowLayout());
    setSize(400,400);
    setVisible(true);
    }
    public void initListener(){
    cbx.addMouseListener(new MouseListener(){
    public void mouseClicked(MouseEvent e) {
    if(!txtfield.isVisible()){
    txtfield.setVisible(true);
    }
    //System.out.println("afsafasdf");
    } public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub
    }
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

    } public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    } public void mouseReleased(MouseEvent e) {

    }
    });
    cbx.addFocusListener(new FocusListener(){
    public void focusGained(FocusEvent e) {
    txtfield.setVisible(true);
    }
    public void focusLost(FocusEvent e) {

    }

    });

    txtfield.addKeyListener(new KeyListener(){ public void keyPressed(KeyEvent e) {
    if(e.getKeyChar()==e.VK_ENTER){
    String txt = txtfield.getText();
    boolean flag = false;
    if(!txt.equals("")){
    for(int i=0;i<cbxModel.getSize();i++){
    if(cbxModel.getElementAt(i).equals(txt)){
    flag = true;
    cbxModel.setSelectedItem(txt);
    break;
    }
    }
    if(!flag){
    cbx.addItem(txt);
    cbxModel.setSelectedItem(txt);
    }
    }
    }
    } public void keyReleased(KeyEvent e) {

    }
    public void keyTyped(KeyEvent e) {

    }

    });
    }
    public static void main(String args[]){
    new StackUI();
    }
    }
      

  6.   


    public class StackUI extends JFrame {
    JTextField txtfield = new JTextField("afsd");
    ComboBoxModel cbxModel = new DefaultComboBoxModel();
    JComboBox cbx = new JComboBox(cbxModel);
    static boolean isVisible = false; //======== 1 public StackUI() {
    Container contentPane = this.getContentPane();
    // txtfield = new JTextField(); //======== 2
    cbx.addItem("1");
    cbx.addItem("2");
    cbx.setPreferredSize(new Dimension(80, 25));
    txtfield.setPreferredSize(new Dimension(100, 25));
    contentPane.add(cbx);
    contentPane.add(txtfield);
    txtfield.setVisible(isVisible); //======== 3
    initListener();
    this.setLayout(new FlowLayout());
    setSize(400, 400);
    setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    } public void initListener() {
    //===============  4   ===================
    cbx.addActionListener(new ActionListener(){ @Override
    public void actionPerformed(ActionEvent e) {
    isVisible = isVisible ? false : true;
    txtfield.setVisible(isVisible);
    StackUI.this.validate(); // ======= 重点 ======
    }

    });
    /**
    cbx.addMouseListener(new MouseListener() {
    public void mouseClicked(MouseEvent e) {
    if (!txtfield.isVisible()) {
    txtfield.setVisible(true);
    }
     System.out.println("afsafasdf");
    } public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub
    } public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub } public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    } public void mouseReleased(MouseEvent e) { }
    });*/
    cbx.addFocusListener(new FocusListener() {
    public void focusGained(FocusEvent e) {
    txtfield.setVisible(true);
    } public void focusLost(FocusEvent e) { } }); txtfield.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e) {
    if (e.getKeyChar() == e.VK_ENTER) {
    String txt = txtfield.getText();
    boolean flag = false;
    if (!txt.equals("")) {
    for (int i = 0; i < cbxModel.getSize(); i++) {
    if (cbxModel.getElementAt(i).equals(txt)) {
    flag = true;
    cbxModel.setSelectedItem(txt);
    break;
    }
    }
    if (!flag) {
    cbx.addItem(txt);
    cbxModel.setSelectedItem(txt);
    }
    }
    }
    } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { } });
    } public static void main(String args[]) {
    new StackUI();
    }
    }
      

  7.   


    主要问题不是setVisualable()的问题  不是显示不了 而是没地方显示this.setLayout(new FlowLayout());//这句话吧布局设为流布局 流布局管理器默认的中间对齐与你的
                                          //setPreferredSize()大小 和 JFrame大小 有矛盾
                                           //JTextField被挡住了//如果你点击窗口最大化就会发现出来了把this.setLayout(new FlowLayout());
    改成this.setLayout(new FlowLayout(FlowLayout.LEFT));//设置为左对齐就好le你注册的监听器也很特别 
    JComBox一般是注册
    addItemLinstener 监听Item改变
    addActionListener 监听被点击 
      

  8.   

    JTextField jtf = new JTextField();
    public void actionPerformed(ActionEvent e){
    jtf.setVisible(!jtf.isVisible());
    }