本文目录一览:
java设计用户图像界面?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* 窗口继承自JFrame.
* 为了方便事件处理, 实现了ActionListener
*/
public class ScoreApp extends JFrame implements ActionListener {
//需要调用的文本框组件
private JTextField tfCh, tfMath, tfEn, tfTotal, tfAvg;
private static final Font MY_FONT = new Font(null, Font.PLAIN, 16);
public ScoreApp() {
//初始化组件
initControls();
//初始化窗口
initWindow();
}
private void initControls() {
//顶部
JLabel info = new JLabel("请输入三门课程的成绩", JLabel.CENTER);
info.setFont(new Font(null, Font.BOLD, 25));
this.add(info, BorderLayout.NORTH);
//中部: 是一个5行2列的表格布局;水平间距垂直间距都是10
JPanel jpCenter = new JPanel(new GridLayout(5, 2, 10, 10));
JLabel jlCh = new JLabel("语文", JLabel.CENTER);
tfCh = new JTextField();
tfCh.setPreferredSize(new Dimension(150, 30));
JLabel jlMath = new JLabel("数学", JLabel.CENTER);
tfMath = new JTextField();
JLabel jlEh = new JLabel("英语", JLabel.CENTER);
tfEn = new JTextField();
JLabel jlTotal = new JLabel("总分", JLabel.CENTER);
tfTotal = new JTextField();
//总分需要计算获得,不许直接编辑
tfTotal.setEditable(false);
//不许编辑后,默认会变成灰色, 重新设置背景色为白色
tfTotal.setBackground(Color.WHITE);
JLabel jlAvg = new JLabel("平均分", JLabel.CENTER);
tfAvg = new JTextField();
//平均分同样需要计算获得,不许编辑
tfAvg.setEditable(false);
tfAvg.setBackground(Color.WHITE);
addAll(jpCenter, jlCh, tfCh, jlMath, tfMath, jlEh, tfEn, jlTotal, tfTotal, jlAvg, tfAvg);
this.add(jpCenter, BorderLayout.CENTER);
//底部
JPanel jpBottom = new JPanel();
//美化下,创建个边框
jpBottom.setBorder(BorderFactory.createEtchedBorder());
JButton btnCompute = new JButton("计算");
btnCompute.addActionListener(this);
JButton btnReset = new JButton("重置");
btnReset.addActionListener(this);
JButton btnExit = new JButton("退出");
btnExit.addActionListener(this);
addAll(jpBottom, btnCompute,btnReset, btnExit);
this.add(jpBottom, BorderLayout.SOUTH);
}
private void initWindow() {
setTitle("计算学生成绩的总分和平均分");
setSize(520, 380);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* 向第一个容器里添加组件
* @param pane
* @param controls
*/
private void addAll(JComponent pane, JComponent... controls) {
for (JComponent control : controls) {
control.setFont(MY_FONT);
pane.add(control);
}
}
/**
* 事件处理. 处理按钮的点击事件
* @param e
*/
@Override
public void actionPerformed(ActionEvent e) {
//判断是哪一个按钮被点击了,然后进行对应的处理
String cmd = e.getActionCommand();
//如果是退出按钮被点击那么退出
if (cmd.equals("退出")) {
System.exit(0);
//如果是计算按钮被点击,那么计算结果
} else if (cmd.equals("计算")) {
double sum = 0, avg = 0;
try {
double scoreCh = Double.parseDouble(tfCh.getText());
double scoreMath = Double.parseDouble(tfMath.getText());
double scoreEn = Double.parseDouble(tfEn.getText());
sum = scoreCh + scoreMath + scoreEn;
avg = sum / 3.0;
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(this, "请确认输入的都是数字,不能是空白,字母,符号等");
return;
}
tfTotal.setText(String.valueOf(sum));
//平均分 四舍五入保留2位
tfAvg.setText(String.format("%.2f", avg));
//如果点击了重置按钮 ,那么清空文本框的内容
} else if (cmd.equals("重置")) {
tfCh.setText("");
tfMath.setText("");
tfEn.setText("");
tfTotal.setText("");
tfAvg.setText("");
}
}
public static void main(String[] args) {
//创建窗口设置可见
SwingUtilities.invokeLater(() -
new ScoreApp().setVisible(true)
);
}
}
Java编写图形用户界面程序
运行如图
参考代码如下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RegDemo extends JFrame implements ActionListener{
JTextField jtf;
JPasswordField jpf;
public RegDemo() {
//组件的创建, 和布局安排
JPanel jpc = new JPanel();//默认流式布局
JPanel jp1 = new JPanel(new GridLayout(2, 2,5,10));//网格布局
jp1.setBorder(BorderFactory.createTitledBorder("用户注册"));
JLabel jl1 = new JLabel("用户名:");
jtf = new JTextField(10);
JLabel jl2 = new JLabel("密码:");
jpf = new JPasswordField(10);
jpf.setEchoChar('*');//用*号来隐藏密码的显示
jp1.add(jl1);jp1.add(jtf);
jp1.add(jl2);jp1.add(jpf);
jpc.add(jp1);
add(jpc);
JButton jb1 = new JButton("提交");
jb1.addActionListener(this);
jb1.setActionCommand("yes");
JButton jb2 = new JButton("取消");
jb2.addActionListener(this);
jb2.setActionCommand("no");
JPanel jp2 = new JPanel();
jp2.add(jb1);jp2.add(jb2);
add(jp2,BorderLayout.SOUTH);
setTitle("用户注册界面");
setSize(280, 280);
setLocationRelativeTo(null);//窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//
setVisible(true);
}
public static void main(String[] args) {
new RegDemo();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("yes")){
String name = jtf.getText().trim();
String pwd = new String(jpf.getPassword());
if(name.equals("")||pwd.equals("")){
JOptionPane.showMessageDialog(this, "你还没有输入用户名或者密码");
}else{
JOptionPane.showMessageDialog(this, "注册成功!用户名"+name+",密码"+pwd);
}
}else{
jtf.setText("");
jpf.setText("");
}
}
}
在java中,设计图形用户界面需要经历哪几个基本步骤
1, 分析业务需求, 理顺业务逻辑
2, 根据业务需要考虑使用何种容器(JFrame ,Frame ,JWindow..) 需要的数量.
3, 每个容器(窗口)使用组件
4.组件使用何种布局方式(边界布局,绝对布局,网格布局..),排列在容器(窗口)中
5.组件中需要响应那些事件, 把事件响应代码写好,然后绑定到组件上(addListener...)
6.调试,测试