java swing自定义对话框_swing自定义JDialog弹出框

第一次搞swing,自定义JDialog的例子较少,写下来备忘

,对JDialog中的文本框进行了验证packagecom.chauvet;importjava.awt.Component;importjava.awt.Dimension;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjava.util.HashMap;importjava.util.Map;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JTextField;importjavax.swing.border.EmptyBorder;/***

* 定义的Dialog对话框

*@authorWXW

**/

public class MyDialog extends JDialog implementsActionListener {private static final long serialVersionUID = 1L;public static voidmain(String[] args) {

Map caipinMap = new HashMap();

String yxrsKey= "diyidaocai";

String yxrsVal= "1";

String djjdKey= "dierdaocai";

String djjdVal= "65";

String fqjdKey= "disandaocai";

String fqjdVal= "123";

String abcdKey= "disidaocai";

String abcdVal= "7";

caipinMap.put(yxrsKey,yxrsVal);

caipinMap.put(djjdKey,djjdVal);

caipinMap.put(fqjdKey,fqjdVal);

caipinMap.put(abcdKey,abcdVal);

JFrame alertFrame= newJFrame();

MyDialog d=new MyDialog(alertFrame, true,caipinMap,360,320);

d.setVisible(true);

}

JButton okBtn= new JButton("确定");

JButton cancelBtn= new JButton("关闭");int x = 50;int y = 30;int width = 65;int height = 20;/***

* 自定义 Dialog

*@paramparent

* 父Frame

*@parammodal

* 是否模式窗体

*@paramcaipinMap

* 数据Map

*@paramwindowWidth

* 宽度 需根据数据计算高度

*@paramwindowHeight

* 高度 默认320即可*/

public MyDialog(JFrame parent, boolean modal,Map caipinMap,int windowWidth,intwindowHeight) {super(parent,modal);

Dimension screenSize= Toolkit.getDefaultToolkit().getScreenSize(); //得到屏幕的尺寸

int screenWidth =screenSize.width;int screenHeight =screenSize.height;

JButton []addBtns= newJButton[caipinMap.keySet().size()];

JButton []mutBtns= newJButton[caipinMap.keySet().size()];int btnIndex = 0;

setTitle("test");

setSize(windowWidth,windowHeight);

setLayout(null);

setResizable(false);//this.setUndecorated(true);//setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

setLocation((screenWidth - this.getWidth()) / 2, (screenHeight - this.getHeight())/2);for(String strKey : caipinMap.keySet()) {

JLabel cpNameLBL= new JLabel(strKey+":");

add(cpNameLBL);

cpNameLBL.setBounds(x,y,width,height);

cpNameLBL.setName("lbl"+strKey);

JLabel noticeLbl= newJLabel();

noticeLbl.setName("lbl"+strKey);

noticeLbl.setBounds(x+120,y,width,height);

JTextField cpCountJTF= newJTextField(caipinMap.get(strKey));

add(cpCountJTF);

cpCountJTF.setName("jtf"+strKey);

cpCountJTF.setBounds(x+160,y,width,height);

cpCountJTF.requestFocus();//cpCountJTF.setDocument(new NumberLenghtLimitedDmt(3));

cpCountJTF.addKeyListener(newKeyListener() {

@Overridepublic voidkeyTyped(KeyEvent e) {

JTextField jtf=(JTextField) e.getSource();

String selectVal=jtf.getSelectedText();int keyChar =e.getKeyChar();

String val=jtf.getText();if(null == val || val.trim().length() <= 0 || val.replaceAll("0", "").length() <= 0){ //文本框中没有值时默认为1

jtf.setText("1");

e.consume();return;

}int valLength =val.length();if((null != selectVal && selectVal.length() == valLength) && keyChar ==KeyEvent.VK_0){

jtf.setText("1");

e.consume();return;

}if ((keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9)) { //输入的是数字

if(valLength > 2){ //长度大于2

if(keyChar != KeyEvent.VK_BACK_SPACE && !(null != selectVal && selectVal.trim().length() > 0) ){ //按下的不是backspace键

e.consume();

}

}return;

}

e.consume();//不是数字键//JOptionPane.showMessageDialog(null, "非数字");

}

@Overridepublic voidkeyReleased(KeyEvent e) {}

@Overridepublic voidkeyPressed(KeyEvent e) {}

});

addBtns[btnIndex]= new JButton("+");

addBtns[btnIndex].setName("btn"+strKey);

addBtns[btnIndex].setBounds(x+260,y,width-40,height);

addBtns[btnIndex].setBorder(new EmptyBorder(5,5,5,5));

addBtns[btnIndex].addActionListener(this);

mutBtns[btnIndex]= new JButton("-");

mutBtns[btnIndex].setName("btn"+strKey);

mutBtns[btnIndex].setBounds(x+80,y,width-40,height);

mutBtns[btnIndex].setBorder(new EmptyBorder(5,5,5,5));

mutBtns[btnIndex].addActionListener(this);

add(addBtns[btnIndex]);

add(mutBtns[btnIndex]);

y= y + 30;

btnIndex++;

}

add(okBtn);

add(cancelBtn);

okBtn.setBounds(windowWidth- 190, windowHeight - 80, 60, 25);

okBtn.setName("ok");

cancelBtn.setBounds(windowWidth- 120, windowHeight - 80, 60, 25);

cancelBtn.setName("cancel");

okBtn.addActionListener(this);

cancelBtn.addActionListener(this);

}public voidactionPerformed(ActionEvent e) {

Component[] cmp=getContentPane().getComponents();

JButton btn=(JButton)e.getSource();

String jtfKey= ""+btn.getName().replaceAll("btn", "");if(null != jtfKey && !jtfKey.equals("ok") && !jtfKey.equals("cancel") ){

String btnText=btn.getText();for(Component c : cmp) {if(c instanceofJTextField){

JTextField tf=(JTextField) c;if(c.getName().equals("jtf"+jtfKey)){int val =Integer.parseInt(tf.getText());if(btnText.equals("+")){if(val < 999){

val= val + 1;

}

}else{

val= val - 1;if(val <= 0){

val= 1;

}

}

tf.setText(String.valueOf(val));

}

}

}return;

}if(e.getSource()==okBtn){

System.out.println("OK");for(Component c : cmp) {if(c instanceofJTextField){

JTextField js=(JTextField) c;

System.out.println(js.getName().replaceAll("jtf", "")+":"+js.getText());

}

}return;

}if(e.getSource()==cancelBtn){

System.out.println("cancel");

dispose();return;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值