简单的投票计数软件
设计过程:
1)编写VoteSystem类,该类继承了JFrame。在框架中,共包括4个复选框、4个进度条、4个标签和两个按钮。
“提交”按钮用于计算从新投票的结果。“刷新”按钮用于重置复选框。
2)编写do_submitButton_actionPerformed()方法,该方法首先获得历史投票数,然后根据用户在复选框的选择结果,重新计算投票结果并在进度条和标签中显示。核心代码如下:
private void do_submitButton_actionPerformed(ActionEvent e) {
String text1 = label1.getText();
int number1 = Integer.parseInt(text1.substring(0, text1.length() - 1));
String text2 = label2.getText();
int number2 = Integer.parseInt(text2.substring(0, text2.length() - 1));
String text3 = label3.getText();
int number3 = Integer.parseInt(text3.substring(0, text3.length() - 1));
String text4 = label4.getText();
int number4 = Integer.parseInt(text4.substring(0, text4.length() - 1));
if (checkBox1.isSelected()) {
number1++;
label1.setText(number1 + "票");
}
if (checkBox2.isSelected()) {
number2++;
label2.setText(number2 + "票");
}
if (checkBox3.isSelected()) {
number3++;
label3.setText(number3 + "票");
}
if (checkBox4.isSelected()) {
number4++;
label4.setText(number4 + "票");
}
double total = number1 + number2 + number3 + number4;
progressBar1.setString(number1 * 100 / total + "%");
progressBar1.setValue(number1);
progressBar2.setString(number2 * 100 / total + "%");
progressBar2.setValue(number2);
progressBar3.setString(number3 * 100 / total + "%");
progressBar3.setValue(number3);
progressBar4.setString(number4 * 100 / total + "%");
progressBar4.setValue(number4);
}
完整代码如下:
package cn.str.opera;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.JButton;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.GridLayout;
public class VoteSystem extends JFrame {
private static final long serialVersionUID = 2634692504060297073L;
private JPanel contentPane;
private JCheckBox checkBox1;
private JCheckBox checkBox2;
private JCheckBox checkBox3;
private JCheckBox checkBox4;
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JLabel label4;
private JProgressBar progressBar1;
private JProgressBar progressBar2;
private JProgressBar progressBar3;
private JProgressBar progressBar4;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
UIManager
.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
VoteSystem frame = new VoteSystem();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public VoteSystem() {
setTitle("\u6295\u7968\u7CFB\u7EDF");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
JPanel buttonPanel = new JPanel();
contentPane.add(buttonPanel, BorderLayout.SOUTH);
JButton submitButton = new JButton("\u63D0\u4EA4");
submitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_submitButton_actionPerformed(e);
}
});
submitButton.setFont(new Font("微软雅黑", Font.PLAIN, 12));
buttonPanel.add(submitButton);
JButton refreshButton = new JButton("\u5237\u65B0");
refreshButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_refreshButton_actionPerformed(e);
}
});
refreshButton.setFont(new Font("微软雅黑", Font.PLAIN, 12));
buttonPanel.add(refreshButton);
JPanel panel = new JPanel();// 创建面板,并设计面板标题
panel.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 0)),
"\u9009\u62E9\u60A8\u64C5\u957F\u7684\u8BED\u8A00",
TitledBorder.LEADING, TitledBorder.TOP, null, new Color(59, 59,
59)));
contentPane.add(panel, BorderLayout.CENTER);
panel.setLayout(new GridLayout(4, 1, 15, 15));
//面板java
JPanel panel1 = new JPanel();
panel.add(panel1);
panel1.setLayout(new BorderLayout(0, 0));
checkBox1 = new JCheckBox("Java:");
panel1.add(checkBox1, BorderLayout.WEST);
label1 = new JLabel("0\u7968");
panel1.add(label1, BorderLayout.EAST);
progressBar1 = new JProgressBar();
progressBar1.setStringPainted(true);
panel1.add(progressBar1, BorderLayout.CENTER);
//面板Peri
JPanel panel2 = new JPanel();
panel.add(panel2);
panel2.setLayout(new BorderLayout(0, 0));
checkBox2 = new JCheckBox("Perl:");
panel2.add(checkBox2, BorderLayout.WEST);
progressBar2 = new JProgressBar();
progressBar2.setStringPainted(true);
panel2.add(progressBar2, BorderLayout.CENTER);
label2 = new JLabel("0\u7968");
panel2.add(label2, BorderLayout.EAST);
//面板Ruby
JPanel panel3 = new JPanel();
panel.add(panel3);
panel3.setLayout(new BorderLayout(0, 0));
checkBox3 = new JCheckBox("Ruby:");
panel3.add(checkBox3, BorderLayout.WEST);
progressBar3 = new JProgressBar();
progressBar3.setStringPainted(true);
panel3.add(progressBar3, BorderLayout.CENTER);
label3 = new JLabel("0\u7968");
panel3.add(label3, BorderLayout.EAST);
//面板Logo
JPanel panel4 = new JPanel();
panel.add(panel4);
panel4.setLayout(new BorderLayout(0, 0));
checkBox4 = new JCheckBox("Logo:");
panel4.add(checkBox4, BorderLayout.WEST);
progressBar4 = new JProgressBar();
progressBar4.setStringPainted(true);
panel4.add(progressBar4, BorderLayout.CENTER);
label4 = new JLabel("0\u7968");
panel4.add(label4, BorderLayout.EAST);
}
private void do_submitButton_actionPerformed(ActionEvent e) {
String text1 = label1.getText();
int number1 = Integer.parseInt(text1.substring(0, text1.length() - 1));
String text2 = label2.getText();
int number2 = Integer.parseInt(text2.substring(0, text2.length() - 1));
String text3 = label3.getText();
int number3 = Integer.parseInt(text3.substring(0, text3.length() - 1));
String text4 = label4.getText();
int number4 = Integer.parseInt(text4.substring(0, text4.length() - 1));
if (checkBox1.isSelected()) {
number1++;
label1.setText(number1 + "票");
}
if (checkBox2.isSelected()) {
number2++;
label2.setText(number2 + "票");
}
if (checkBox3.isSelected()) {
number3++;
label3.setText(number3 + "票");
}
if (checkBox4.isSelected()) {
number4++;
label4.setText(number4 + "票");
}
double total = number1 + number2 + number3 + number4;
progressBar1.setString(number1 * 100 / total + "%");
progressBar1.setValue(number1);
progressBar2.setString(number2 * 100 / total + "%");
progressBar2.setValue(number2);
progressBar3.setString(number3 * 100 / total + "%");
progressBar3.setValue(number3);
progressBar4.setString(number4 * 100 / total + "%");
progressBar4.setValue(number4);
}
private void do_refreshButton_actionPerformed(ActionEvent e) {
checkBox1.setSelected(false);
checkBox2.setSelected(false);
checkBox3.setSelected(false);
checkBox4.setSelected(false);
}
}