java swing单击按钮隐藏显示JtextField的问题?

zhangshenqiu 2009-11-12 11:17:19
java swing单击按钮隐藏显示JtextField的问题?我只能隐藏JTextfiled,但不能显示出来?急各位帮忙给点源码。
...全文
846 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingzhe2008 2009-11-12
  • 打赏
  • 举报
回复

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();
}
}
zhangshenqiu 2009-11-12
  • 打赏
  • 举报
回复

默认是隐藏的,单击那个下拉的才显示,但为什么那样显示不了,各位帮帮忙!

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();
}
}
安小寰 2009-11-12
  • 打赏
  • 举报
回复

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();
}
}
swandragon 2009-11-12
  • 打赏
  • 举报
回复
JTextField jtf = new JTextField();
boolean visible = false;
public void actionPerformed(ActionEvent e){
jtf.setVisible(visible);
visible = visible ? false : true;
}
imasmallbird 2009-11-12
  • 打赏
  • 举报
回复
你是用JtextField.setVisible(false)设置的隐藏吧,那你可以在再次单击的时候设置
JtextField.setVisible(true)不就行了吗~~
swandragon 2009-11-12
  • 打赏
  • 举报
回复
JTextField jtf = new JTextField(20);

隐藏jtf.setVisible(false);
显示jtf.setVisible(true);
zhuzeitou 2009-11-12
  • 打赏
  • 举报
回复
JTextField jtf = new JTextField();
public void actionPerformed(ActionEvent e){
jtf.setVisible(!jtf.isVisible());
}
HelloAldis 2009-11-12
  • 打赏
  • 举报
回复

主要问题不是setVisualable()的问题 不是显示不了 而是没地方显示

this.setLayout(new FlowLayout());//这句话吧布局设为流布局 流布局管理器默认的中间对齐与你的
//setPreferredSize()大小 和 JFrame大小 有矛盾
//JTextField被挡住了

//如果你点击窗口最大化就会发现出来了

把this.setLayout(new FlowLayout());
改成this.setLayout(new FlowLayout(FlowLayout.LEFT));//设置为左对齐就好le

你注册的监听器也很特别
JComBox一般是注册
addItemLinstener 监听Item改变
addActionListener 监听被点击

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧