123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- package com.sg.answer.panel;
- import com.sg.answer.core.SgEntity;
- import com.sg.answer.core.UserInfoEntity;
- import com.sg.answer.sg.Constant;
- import com.sg.answer.sg.FrameManager;
- import com.sg.answer.entity.JobTypeEntity;
- import com.sg.answer.utils.ObjectUtils;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.datatransfer.StringSelection;
- import java.awt.event.*;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.concurrent.atomic.AtomicBoolean;
- import static com.sg.answer.sg.API.reset;
- /**
- * @author 王玉鹏
- * @version 1.0
- * @className PlaceComponents
- * @description TODO
- * @date 2020/3/19 13:03
- */
- @Slf4j
- public class PlaceComponents {
- private AtomicBoolean status = new AtomicBoolean(true);
- protected AtomicBoolean pause = new AtomicBoolean(false);
- private static final Object lock = new Object();
- public JPanel placeComponents() {
- JPanel panel = new JPanel();
- panel.setLayout(null);
- // 创建 当前关卡JLabel
- JLabel gkLabel = new JLabel("当前关卡:");
- gkLabel.setBounds(10,10,80,25);
- panel.add(gkLabel);
- SgEntity sgEntity = new SgEntity();
- sgEntity.getGkText().setForeground(Color.RED);
- sgEntity.getGkText().setBounds(100,10,165,25);
- panel.add(sgEntity.getGkText());
- // 创建 JLabel
- JLabel userLabel = new JLabel("用户:");
- /* 这个方法定义了组件的位置。
- * setBounds(x, y, width, height)
- * x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。
- */
- userLabel.setBounds(10,40,80,25);
- panel.add(userLabel);
- sgEntity.getUserText().setBounds(100,40,165,25);
- panel.add( sgEntity.getUserText());
- // 输入密码的文本域
- JLabel passwordLabel = new JLabel("密码:");
- passwordLabel.setBounds(10,70,80,25);
- panel.add(passwordLabel);
- sgEntity.getPasswordText().setBounds(100,70,165,25);
- panel.add(sgEntity.getPasswordText());
- // 工种的文本域
- JLabel gzLabel = new JLabel("工种:");
- gzLabel.setBounds(10,100,80,25);
- panel.add(gzLabel);
- JComboBox comboBox=new JComboBox();
- for (JobTypeEntity jobTypeEntity : Constant.jobTypeList) {
- comboBox.addItem(jobTypeEntity);
- }
- /* for (String JobTypeName:Constant.jobTypeId.keySet()) {
- comboBox.addItem(JobTypeName);
- }*/
- sgEntity.setComboBox(comboBox);
- comboBox.setBounds(100,100,165,25);
- panel.add(comboBox);
- //难度
- JLabel typeLabel = new JLabel("难度选择:");
- typeLabel.setBounds(10,130,80,25);
- panel.add(typeLabel);
- JComboBox typeBox=new JComboBox();
- for (String name : Constant.level.keySet()) {
- typeBox.addItem(name);
- }
- typeBox.setBounds(100,130,165,25);
- sgEntity.setTypeBox(typeBox);
- panel.add(typeBox);
- //统计
- JLabel xjLabel = new JLabel("当前刷分小计:");
- xjLabel.setBounds(320,10,100,25);
- panel.add(xjLabel);
- sgEntity.getXjText().setBounds(410,10,50,25);
- sgEntity.getXjText().setForeground(Color.green);
- panel.add(sgEntity.getXjText());
- //目标显示
- JLabel mbLabel = new JLabel("目标:");
- mbLabel.setBounds(460,10,100,25);
- panel.add(mbLabel);
- sgEntity.getMbText().setBounds(500,10,50,25);
- sgEntity.getMbText().setForeground(Color.red);
- panel.add(sgEntity.getMbText());
- //倒计时
- sgEntity.getTimeLabel().setForeground(Color.MAGENTA);
- sgEntity.getTimeLabel().setBounds(530,10,150,20);
- panel.add(sgEntity.getTimeLabel());
- // 自定义刷分
- //目标显示
- JLabel zdyLabel = new JLabel("自定义刷分:");
- zdyLabel.setBounds(10,160,100,25);
- panel.add(zdyLabel);
- sgEntity.getCoustomText().setBounds(100,160,100,25);
- panel.add( sgEntity.getCoustomText());
- JButton coustomButton = new JButton("刷分");
- coustomButton.setBounds(210, 160, 55, 25);
- panel.add(coustomButton);
- // 创建登录按钮
- JButton loginButton = new JButton("登陆答题");
- loginButton.setBounds(10, 190, 110, 25);
- panel.add(loginButton);
- // 创建停止按钮
- JButton stopButton = new JButton("结束刷题");
- stopButton.setBounds(160, 190, 110, 25);
- panel.add(stopButton);
- //日志
- sgEntity.getTextArea().setBounds(10, 260, 770, 150);
- // 设置自动换行
- sgEntity.getTextArea().setLineWrap(true);
- // 添加到内容面板
- sgEntity.getTextArea().setText("日志");
- sgEntity.getTextArea().setForeground(Color.green);
- sgEntity.getTextArea().setBackground(Color.black);
- sgEntity.getTextArea().setFocusable(false);
- panel.add( sgEntity.getTextArea());
- //日志滚动面板
- JScrollPane scrollpane=new JScrollPane();
- scrollpane.setBounds(10, 260, 700, 180);
- scrollpane.setViewportView( sgEntity.getTextArea());
- panel.add(scrollpane);
- // tip
- JLabel bqLabel = new JLabel("本软件由彭宇制作,如有疑问请加微信:pengyu20100613联系本人");
- bqLabel.setForeground(Color.RED);
- bqLabel.setBounds(10,420,400,20);
- panel.add(bqLabel);
- /*******************************个人信息面板*********************************/
- UserInfoEntity userInfoEntity = new UserInfoEntity();
- // 姓名
- JLabel userName = new JLabel("姓名:");
- userName.setBounds(320,40,80,25);
- panel.add(userName);
- userInfoEntity.setUserNameData( new JLabel());
- userInfoEntity.getUserNameData().setBounds(360,40,80,25);
- userInfoEntity.getUserNameData().setForeground(Color.blue);
- userInfoEntity.getUserNameData().addMouseListener(new MouseAdapter() {
- @Override
- public void mouseClicked(MouseEvent e){
- if (e.getButton() == MouseEvent.BUTTON3){
- StringSelection selection = new StringSelection(userInfoEntity.getUserNameData().getText());
- Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, selection);
- JOptionPane.showMessageDialog(panel, "姓名已复制到剪贴板了" ," tip", JOptionPane.WARNING_MESSAGE);
- }
- }
- });
- panel.add( userInfoEntity.getUserNameData());
- // 工号
- JLabel jobNo = new JLabel("工号:");
- jobNo.setBounds(320,75,80,25);
- panel.add(jobNo);
- userInfoEntity.getJobNoData().setBounds(360,75,80,25);
- userInfoEntity.getJobNoData().setForeground(Color.blue);
- panel.add(userInfoEntity.getJobNoData());
- // 工种
- JLabel jobType = new JLabel("工种:");
- jobType.setBounds(320,105,80,25);
- panel.add(jobType);
- userInfoEntity.getJobTypeData().setBounds(360,105,80,25);
- userInfoEntity.getJobTypeData().setForeground(Color.blue);
- panel.add(userInfoEntity.getJobTypeData());
- // 积分
- JLabel integral = new JLabel("总积分:");
- integral.setBounds(30,220,80,25);
- integral.setFont(new Font (Font.DIALOG, Font.BOLD, 15));
- integral.setForeground(Color.BLUE);
- panel.add(integral);
- userInfoEntity.getIntegralDate().setBounds(100,220,80,25);
- userInfoEntity.getIntegralDate().setFont(new Font (Font.DIALOG, Font.BOLD, 15));
- userInfoEntity.getIntegralDate().setForeground(Color.red);
- panel.add(userInfoEntity.getIntegralDate());
- // 金币
- JLabel goldCoin = new JLabel("金币:");
- goldCoin.setBounds(320,135,80,25);
- panel.add(goldCoin);
- userInfoEntity.getGoldCoinData().setBounds(360,135,80,25);
- userInfoEntity.getGoldCoinData().setForeground(Color.blue);
- panel.add(userInfoEntity.getGoldCoinData());
- // 钻石
- JLabel diamond = new JLabel("钻石:");
- diamond.setBounds(320,165,80,25);
- panel.add(diamond);
- // 暂停
- JButton parseButton = new JButton("暂停答题");
- parseButton.setBounds(350, 190, 80, 25);
- panel.add(parseButton);
- userInfoEntity.getDiamondData().setBounds(360,165,80,25);
- userInfoEntity.getDiamondData().setForeground(Color.blue);
- panel.add( userInfoEntity.getDiamondData());
- JLabel initLabel = new JLabel("本次答题初始分数:");
- initLabel.setBounds(200,220,140,25);
- initLabel.setFont(new Font (Font.DIALOG, Font.BOLD, 15));
- initLabel.setForeground(Color.BLUE);
- panel.add(initLabel);
- JLabel statrScore = new JLabel("0");
- statrScore.setBounds(355,220,80,25);
- statrScore.setFont(new Font (Font.DIALOG, Font.BOLD, 15));
- statrScore.setForeground(Color.red);
- panel.add(statrScore);
- // 头像
- try {
- URL url= new URL("http://pic1.win4000.com/pic/9/75/1a9b924550.jpg");
- ImageIcon imageIcon = new ImageIcon(url);
- imageIcon.setImage(imageIcon.getImage().getScaledInstance(195,290,Image.SCALE_DEFAULT));
- sgEntity.setImage(new JLabel(imageIcon));
- sgEntity.getImage().setBounds(480,30,200,300);
- panel.add(sgEntity.getImage());
- } catch (MalformedURLException e) {
- e.printStackTrace();
- }
- //自定义监听时间
- coustomButton.addActionListener(e -> {
- if (StringUtils.isEmpty(sgEntity.getCoustomText().getText()) || !ObjectUtils.isNumeric(sgEntity.getCoustomText().getText())) {
- JOptionPane.showMessageDialog(panel, "请输入正确得分数", " stop", JOptionPane.ERROR_MESSAGE);
- return;
- }
- sgEntity.setCoustomScore(Double.parseDouble(sgEntity.getCoustomText().getText()));
- sgEntity.getMbText().setText(sgEntity.getCoustomText().getText());
- });
- //结束答题时间
- stopButton.addActionListener(e -> {
- status.set(false);
- JOptionPane.showMessageDialog(panel, "本次答题已结束,如需要重写开始请继续" ," stop", JOptionPane.ERROR_MESSAGE);
- reset(loginButton,sgEntity,"已结束本次答题");
- });
- //登录时间
- loginButton.addActionListener((ActionEvent e) -> {
- status.set(true);
- try {
- new FrameManager().start(loginButton,sgEntity,userInfoEntity,statrScore,status,pause,lock);
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- });
- parseButton.addActionListener(e ->{
- loginButton.setEnabled(false);
- parseButton.setText(parseButton.getText().equals("暂停答题")?"继续答题":"暂停答题");
- pause.set(!pause.get());
- if (!pause.get()){
- synchronized (lock){
- sgEntity.apppendLogs(",已恢复当前答题, ");
- log.info("以恢复当前等待线程,开始继续答题");
- lock.notify();
- }
- }
- });
- return panel;
- }
- }
|