一个JDialog窗口



一个JDialog窗口

package jta26;

import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Rectangle;
import java.awt.Font;
import java.math.BigDecimal;
import javax.swing.JOptionPane;
import javax.swing.JFormattedTextField;
import javax.swing.text.NumberFormatter;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.WindowConstants;
import javax.swing.BorderFactory;
import javax.swing.border.BevelBorder;
import java.awt.Dimension;
import java.awt.Insets;

public class Untitled3 {
public Untitled3() {
}

private JPanel jContentPane = null;
private JButton jButton = null;
private JButton jButton2 = null;
JLabel jLabellogin = new JLabel();
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
JTextField jTextField1 = new JTextField();
JTextField jTextField2 = new JPasswordField(“”, 8);
JTextField jTextField3 = new JTextField();
private JButton jButton3 = null;

private JLabel getJLabelLogin() {
if (jLabellogin != null) {
jLabellogin.setText(“Login:”);
//rectangle(int left, int top, int right, int bottom, int mode)
jLabellogin.setBounds(new Rectangle(6, 0, 100, 24)); //在当前窗体的位置
}
return jLabellogin;
}

private JLabel getJLabel1() {
if (jLabel1 != null) {
jLabel1.setText(“UserName:”);
//rectangle(int left, int top, int right, int bottom, int mode)
jLabel1.setBounds(new Rectangle(6, 25, 100, 24)); //在当前窗体的位置
}
return jLabel1;
}

private JTextField getJTextField1() {
if (jTextField1 != null) {
jTextField1.setFocusable(true);
jTextField1.setBounds(new Rectangle(75, 25, 154, 24));
jTextField1.setFont(new Font(“Dialog”, Font.BOLD, 16));
}
return jTextField1;
}

private JLabel getJLabel2() {
if (jLabel2 != null) {
jLabel2.setText(“Passeord:”);
//rectangle(int left, int top, int right, int bottom, int mode)
jLabel2.setBounds(new Rectangle(6, 50, 100, 24)); //在当前窗体的位置
}
return jLabel2;
}

private JTextField getJTextField2() {
if (jTextField2 != null) {
// x, y,Width,Height
jTextField2.setBounds(new Rectangle(75, 50, 154, 24));
}
return jTextField2;
}

private JLabel getJLabel3() {
if (jLabel3 != null) {
jLabel3.setText(“预约ID:”);
//rectangle(int left, int top, int right, int bottom, int mode)
jLabel3.setBounds(new Rectangle(6, 75, 100, 24)); //在当前窗体的位置
}
return jLabel3;
}

private JTextField getJTextField3() {
if (jTextField3 != null) {
jTextField3.setBounds(new Rectangle(75, 75, 154, 24));
jTextField3.setFont(new Font(“Dialog”, Font.BOLD, 16));
}
return jTextField3;
}

private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(15, 120, 80, 36));
jButton.setFont(new Font(“Dialog”, Font.BOLD, 16));
jButton.setText(“Login”);
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {

// BigDecimal oldValue = (BigDecimal) getNumTxtField().
// getValue();
// if (oldValue != null) {
// getNumTxtField().setValue(oldValue.multiply(new
// BigDecimal(2)));
// } else {
// JOptionPane.showMessageDialog(null, “值非法”);
// }
getJTextField1().setEditable(true); //将文本框设置为不可编辑
String text1 = (String) getJTextField1().getText().trim();
String text2 = getJTextField2().getText().trim();
String text3 = getJTextField3().getText().trim();
if (text2.length() == 0) {
JOptionPane.showMessageDialog(jContentPane, “密码不能为空”);
return;
}
getJTextField2().setColumns(16);
String s = “text1=” + text1 + “-text2=” + text2 + “-text3=” +
text3;
JOptionPane.showMessageDialog(null, “值=” + s);
}
});
}
return jButton;
}

private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton();
jButton2.setBounds(new Rectangle(105, 120, 80, 36));
//jButton2.setBorder(null);
jButton2.setFont(new Font(“Dialog”, Font.BOLD, 16));
Insets inset = new Insets(1,1,1,1); //这个数值就是那个边框线离四个边框的距离
jButton2.setMargin(inset);
//jButton2.setPreferredSize(new Dimension(60,60));
//jButton2.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));//突起效果
jButton2.setText(“Cancel”);
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
getJTextField1().setText(“”);
getJTextField2().setText(“”);
getJTextField3().setText(“”);
}
});
}
return jButton2;
}

private JButton getJButton3() {
if (jButton3 == null) {
jButton3 = new JButton();
jButton3.setBounds(new Rectangle(195, 120, 80, 36));
jButton3.setFont(new Font(“Dialog”, Font.BOLD, 16));
jButton3.setText(“Close”); //Exit
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.exit(0);
}
});
}
return jButton3;
}


private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel(); //生成一个JPanel控件
jContentPane.setLayout(null); //设置窗体的布局
jContentPane.add(getJLabelLogin(), null);
jContentPane.add(getJLabel1(), null);
jContentPane.add(getJTextField1(), null);
jContentPane.add(getJLabel2(), null);
jContentPane.add(getJTextField2(), null);
jContentPane.add(getJLabel3(), null);
jContentPane.add(getJTextField3(), null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJButton2(), null);
jContentPane.add(getJButton3(), null);
}
return jContentPane;
}

public static void main(String[] args) {
Untitled3 untitled3 = new Untitled3();
JDialog jDialog = new JDialog();
//调整此窗口的大小,以适合其子组件的首选大小和布局。
jDialog.setSize(300, 200);
jDialog.setContentPane(untitled3.getJContentPane());
jDialog.setTitle(“JDialog”);
jDialog.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
jDialog.setResizable(false);//禁止用户调整窗口大小
jDialog.setVisible(true);
}

}

 

注意:
只用重写MetalButtonUI就可以了, 写了个简单的,给你参考

import javax.swing.AbstractButton;
import javax.swing.UIManager;
import javax.swing.plaf.metal.MetalButtonUI;
import java.awt.Graphics;
import java.awt.Rectangle;

public class MyButtonUI extends MetalButtonUI{

int rectGapX;
int rectGapY;
int rectGapW;
int rectGapH;

public MyButtonUI() {
rectGapX = UIManager.getInt(“ButtonUI.dashedRectGapX”);
rectGapY = UIManager.getInt(“ButtonUI.dashedRectGapY”);
rectGapW = UIManager.getInt(“ButtonUI.dashedRectGapWidth”);
rectGapH = UIManager.getInt(“ButtonUI.dashedRectGapHeight”);
}

protected void paintFocus(Graphics g, AbstractButton b, Rectangle viewRect,
Rectangle textRect, Rectangle iconRect) {

textRect = new Rectangle(rectGapX+3, rectGapY+3, b.getWidth()-rectGapW-6,
b.getHeight()-rectGapH-6);
super.paintFocus(g, b, viewRect, textRect, iconRect);
}
}

使用如下

JButton button = new JButton(“test Button”);
MyButtonUI bui = new MyButtonUI();
button.setUI(bui);

这个有非常简单的方法,JDK本身就提供了这种支持
JButton button = new JButton(“测试”);
Insets inset = new Insets(1,1,1,1); //这个数值就是那个边框线离四个边框的距离
button.setMargin(inset);