本文目錄一覽:
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.調試,測試
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/303582.html