swing开发测试工具

要项目测试需要,使用swing编写个工具,给需要的人,留下代码:)

界面如下:

用java写界面,真费事,使用delphi,分分钟的事情。

特点:

1、给JTextArea增加行数显示

2、给JTextArea增加JScrollPane自适应

贴代码:App.java

1package com.etrans.etsv5.app.rdt.benchmark; 2 3import java.awt.BorderLayout; 4import java.awt.Container; 5import java.awt.Dimension; 6import java.awt.GridLayout; 7import java.awt.Toolkit; 8import java.awt.event.ActionEvent; 9import java.awt.event.ActionListener; 10import java.awt.event.ComponentAdapter; 11import java.awt.event.ComponentEvent; 12import java.awt.event.KeyEvent; 13import java.awt.event.MouseAdapter; 14import java.awt.event.MouseEvent; 15import java.awt.event.WindowAdapter; 16import java.awt.event.WindowEvent; 17import java.awt.event.WindowStateListener; 18import java.util.EnumSet; 19import java.util.Timer; 20import java.util.TimerTask; 21import java.util.concurrent.atomic.AtomicLong; 22 23import javax.swing.JButton; 24import javax.swing.JCheckBox; 25import javax.swing.JComboBox; 26import javax.swing.JDialog; 27import javax.swing.JFrame; 28import javax.swing.JLabel; 29import javax.swing.JMenuItem; 30import javax.swing.JOptionPane; 31import javax.swing.JPanel; 32import javax.swing.JPopupMenu; 33import javax.swing.JScrollPane; 34import javax.swing.JTabbedPane; 35import javax.swing.JTextArea; 36import javax.swing.JTextField; 37import javax.swing.WindowConstants; 38 39import com.etrans.etsv5.lib.realtime.rdt.IRdtListener; 40import com.etrans.etsv5.lib.realtime.rdt.ObjAlarm; 41import com.etrans.etsv5.lib.realtime.rdt.ObjImage; 42import com.etrans.etsv5.lib.realtime.rdt.ObjOpera; 43import com.etrans.etsv5.lib.realtime.rdt.ObjReply; 44import com.etrans.etsv5.lib.realtime.rdt.ObjTrack; 45import com.etrans.etsv5.lib.realtime.rdt.ObjTrans; 46import com.etrans.etsv5.lib.realtime.rdt.RdtConsumer; 47import com.etrans.etsv5.lib.realtime.rdt.RdtType; 48 49/** 50 * 版权所有 (C) 2016 ® E-trans Company <br /> 51 * 单元名称: App.java <br /> 52 * 说 明: <br /> 53 * 作 者: yunnet <br /> 54 * 创建时间: 2016年10月31日 上午11:13:01 <br /> 55 * 最后修改: 2016年10月31日 上午11:13:01 <br /> 56 * 修改历史: <br /> 57 */ 58public class App extends JFrame { 59 private static final long serialVersionUID = -3611164965284482273L; 60 61 // 设置label长度 62 public static final int JLABEL_WIDTH = 100; 63 64 // 设置label宽度 65 public static final int JLABEL_HEIGHT = 21; 66 67 // 设置text框长度 68 public static final int JTEXTFIELD_WIDTH = 121; 69 70 // 设置text框高度 71 public static final int JTEXTFIELD_HEIGHT = 21; 72 73 // 设置text框长度 74 public static final int JBUTTON_WIDTH = 100; 75 76 // 设置text框高度 77 public static final int JBUTTON_HEIGHT = 25; 78 79 // 设置上面控件直接的间隔 80 public static final int SPACING = 10; 81 82 private JLabel label_host = null; 83 private JComboBox<String> comboBox_host = null; 84 85 private JLabel label_group = null; 86 private JTextField text_group = null; 87 88 private JLabel label_instance = null; 89 private JTextField text_instance = null; 90 91 private JCheckBox checkBox1 = null; 92 private JCheckBox checkBox2 = null; 93 private JCheckBox checkBox3 = null; 94 private JCheckBox checkBox4 = null; 95 private JCheckBox checkBox5 = null; 96 private JCheckBox checkBox6 = null; 97 98 private JLabel label_vehicle_id = null; 99 private JTextField text_vehicle_id = null; 100 101 private JButton exec_button = null; 102 103 private String[] tabNames = {"log", "track", "alarm", "reply", "image", "trans", "oprea"}; 104 private JTabbedPane jTabbedPane = new JTabbedPane(); 105 106 private JPanel mainPanel = null; 107 private JPanel panel2 = null; 108 109 private JPanel jPanel_0 = null; 110 private JPanel jPanel_1 = null; 111 private JPanel jPanel_2 = null; 112 private JPanel jPanel_3 = null; 113 private JPanel jPanel_4 = null; 114 private JPanel jPanel_5 = null; 115 private JPanel jPanel_6 = null; 116 117 private JTextArea log_memo_0 = null; 118 private JTextArea log_memo_1 = null; 119 private JTextArea log_memo_2 = null; 120 private JTextArea log_memo_3 = null; 121 private JTextArea log_memo_4 = null; 122 private JTextArea log_memo_5 = null; 123 private JTextArea log_memo_6 = null; 124 125 //################################################################## 126 private RdtConsumer consumer; 127 128 private String lastData = ""; 129 130 private AtomicLong[] cnt = new AtomicLong[6]; 131 132 private volatile boolean isOK = false; 133 134 private int width = 0; 135 private int height = 0; 136 137 138 /** 139 * 构造函数 140 */ 141 public App() { 142 //设置工具标题 143 setTitle("RDT RocketMQ client test"); 144 145 setName("formMain"); 146 147 //获取屏幕大小 148 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 149 150 width = (int) (screenSize.getWidth() * 8 / 10) + 100; 151 height = (int) (screenSize.getHeight() * 8 / 10); 152 153 //设置界面大小 154 setSize(width, height); 155 156 //设置界面居中 157 setLocationRelativeTo(null); 158 159 //设置后,关闭程序时自动释放资源 160 setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 161 162 //设置界面信息 163 setContentPane(getMainPanel()); 164 165 //设置界面可见 166 setVisible(true); 167 168 addComponentListener(new ComponentAdapter() { 169 @Override 170 public void componentResized(ComponentEvent e) { 171 panel2.setBounds(0, 172 comboBox_host.getY() + comboBox_host.getHeight() + 20, 173 getWidth() -17, 174 getHeight() - comboBox_host.getY() - comboBox_host.getHeight()-60 175 ); 176 } 177 }); 178 179 addWindowStateListener(new WindowStateListener() { 180 public void windowStateChanged(WindowEvent e) { 181 if (e.getNewState() == JFrame.MAXIMIZED_BOTH) { 182 panel2.setBounds(0, 183 comboBox_host.getY() + comboBox_host.getHeight() + 20, 184 getWidth() -17, 185 getHeight() - comboBox_host.getY() - comboBox_host.getHeight()-60 186 ); 187 }else if(e.getNewState() == JFrame.NORMAL){ 188 panel2.setBounds(0, 189 comboBox_host.getY() + comboBox_host.getHeight() + 20, 190 getWidth() -17, 191 getHeight() - comboBox_host.getY() - comboBox_host.getHeight()-60 192 ); 193 } 194 } 195 }); 196 197 addWindowListener(new WindowAdapter(){ 198 @Override 199 public void windowClosing(WindowEvent e) { 200 Object[] options = { "确定", "取消" }; 201 JOptionPane pane2 = new JOptionPane("确定要退出吗?", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION, null, options, options[1]); 202 JDialog dialog = pane2.createDialog("警告"); 203 dialog.setVisible(true); 204 205 Object selectedValue = pane2.getValue(); 206 if (selectedValue == null || selectedValue == options[1]) { 207 setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // 这个是关键 208 } else if (selectedValue == options[0]) { 209 setDefaultCloseOperation(EXIT_ON_CLOSE); 210 } 211 } 212 }); 213 214 this.consumer = new RdtConsumer(); 215 216 for(int i = 0; i < 6; i++) 217 cnt[i] = new AtomicLong(0); 218 219 Timer timer = new Timer(); 220 timer.schedule(new TimerTask() { 221 private String hintString = ""; 222 @Override 223 public void run() { 224 if(isOK){ 225 sb.delete(0, sb.length()); 226 sb.append("::::::") 227 .append("track:").append(cnt[0].get()).append(" ") 228 .append("alarm:").append(cnt[1].get()).append(" ") 229 .append("reply:").append(cnt[2].get()).append(" ") 230 .append("image:").append(cnt[3].get()).append(" ") 231 .append("trans:").append(cnt[4].get()).append(" ") 232 .append("opera:").append(cnt[5].get()).append(" ") 233 .append(lastData); 234 235 String a = sb.toString(); 236 if(!hintString.equals(a)){ 237 doAddLog_1(a); 238 hintString = a; 239 } 240 } 241 } 242 }, 1000, 1000); 243 } 244 245 private void layoutComponents(){ 246 int i = 0; 247 248 jPanel_0 = new JPanel(); 249 jPanel_0.setLayout(new BorderLayout()); 250 jTabbedPane.addTab(tabNames[i++], jPanel_0); 251 jTabbedPane.setMnemonicAt(0, KeyEvent.VK_0); 252 253 log_memo_0 = new JTextArea(); 254 log_memo_0.setLineWrap(true); 255 JScrollPane scrollPane_0 = new JScrollPane(log_memo_0, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 256 jPanel_0.add(scrollPane_0); 257 258 LineNumberHeaderView lineNumberHeader_0 = new LineNumberHeaderView(); 259 //设置行号的高度,如果和textarea的行高不匹配,可以修改此值 260 lineNumberHeader_0.setLineHeight(16); 261 scrollPane_0.setRowHeaderView(lineNumberHeader_0); 262 263 JMenuItem item_0 = new JMenuItem("clear"); 264 item_0.addActionListener(new ActionListener() { 265 public void actionPerformed(ActionEvent e) { 266 log_memo_0.setText(""); 267 } 268 }); 269 270 JPopupMenu popupMenu_0 = new JPopupMenu(); 271 popupMenu_0.add(item_0); 272 273 log_memo_0.add(popupMenu_0); 274 log_memo_0.addMouseListener(new MouseAdapter() { 275 @Override 276 public void mousePressed(MouseEvent e) { 277 if (e.getButton() == MouseEvent.BUTTON3) { 278 popupMenu_0.show(e.getComponent(), e.getX(), e.getY()); 279 } 280 } 281 }); 282 283////////////////////////////////////////////////////////////// 284 285 jPanel_1 = new JPanel(); 286 jPanel_1.setLayout(new BorderLayout()); 287 jTabbedPane.addTab(tabNames[i++], jPanel_1); 288 jTabbedPane.setMnemonicAt(0, KeyEvent.VK_1); 289 290 log_memo_1 = new JTextArea(); 291 log_memo_1.setLineWrap(true); 292 JScrollPane scrollPane_1 = new JScrollPane(log_memo_1, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 293 jPanel_1.add(scrollPane_1); 294 295 LineNumberHeaderView lineNumberHeader_1 = new LineNumberHeaderView(); 296 lineNumberHeader_1.setLineHeight(16); 297 scrollPane_1.setRowHeaderView(lineNumberHeader_1); 298 299 JMenuItem item_1 = new JMenuItem("clear"); 300 item_1.addActionListener(new ActionListener() { 301 public void actionPerformed(ActionEvent e) { 302 log_memo_1.setText(""); 303 } 304 }); 305 306 JPopupMenu popupMenu_1 = new JPopupMenu(); 307 popupMenu_1.add(item_1); 308 309 log_memo_1.add(popupMenu_1); 310 log_memo_1.addMouseListener(new MouseAdapter() { 311 @Override 312 public void mousePressed(MouseEvent e) { 313 if (e.getButton() == MouseEvent.BUTTON3) { 314 popupMenu_1.show(e.getComponent(), e.getX(), e.getY()); 315 } 316 } 317 }); 318 319////////////////////////////////////////////////////////////// 320 321 jPanel_2 = new JPanel(); 322 jPanel_2.setLayout(new BorderLayout()); 323 jTabbedPane.addTab(tabNames[i++], jPanel_2); 324 jTabbedPane.setMnemonicAt(0, KeyEvent.VK_2); 325 326 log_memo_2 = new JTextArea(); 327 log_memo_2.setLineWrap(true); 328 JScrollPane scrollPane_2 = new JScrollPane(log_memo_2, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 329 jPanel_2.add(scrollPane_2); 330 331 LineNumberHeaderView lineNumberHeader_2 = new LineNumberHeaderView(); 332 lineNumberHeader_2.setLineHeight(16); 333 scrollPane_2.setRowHeaderView(lineNumberHeader_2); 334 335 JMenuItem item_2 = new JMenuItem("clear"); 336 item_2.addActionListener(new ActionListener() { 337 public void actionPerformed(ActionEvent e) { 338 log_memo_2.setText(""); 339 } 340 }); 341 342 JPopupMenu popupMenu_2 = new JPopupMenu(); 343 popupMenu_2.add(item_2); 344 345 log_memo_2.add(popupMenu_2); 346 log_memo_2.addMouseListener(new MouseAdapter() { 347 @Override 348 public void mousePressed(MouseEvent e) { 349 if (e.getButton() == MouseEvent.BUTTON3) { 350 popupMenu_2.show(e.getComponent(), e.getX(), e.getY()); 351 } 352 } 353 }); 354 355////////////////////////////////////////////////////////////// 356 357 jPanel_3 = new JPanel(); 358 jPanel_3.setLayout(new BorderLayout()); 359 jTabbedPane.addTab(tabNames[i++], jPanel_3); 360 jTabbedPane.setMnemonicAt(0, KeyEvent.VK_3); 361 362 log_memo_3 = new JTextArea(); 363 log_memo_3.setLineWrap(true); 364 JScrollPane scrollPane_3 = new JScrollPane(log_memo_3, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 365 jPanel_3.add(scrollPane_3); 366 367 LineNumberHeaderView lineNumberHeader_3 = new LineNumberHeaderView(); 368 lineNumberHeader_3.setLineHeight(16); 369 scrollPane_3.setRowHeaderView(lineNumberHeader_3); 370 371 JMenuItem item_3 = new JMenuItem("clear"); 372 item_3.addActionListener(new ActionListener() { 373 public void actionPerformed(ActionEvent e) { 374 item_3.setText(""); 375 } 376 }); 377 378 JPopupMenu popupMenu_3 = new JPopupMenu(); 379 popupMenu_3.add(item_3); 380 381 log_memo_3.add(popupMenu_3); 382 log_memo_3.addMouseListener(new MouseAdapter() { 383 @Override 384 public void mousePressed(MouseEvent e) { 385 if (e.getButton() == MouseEvent.BUTTON3) { 386 popupMenu_3.show(e.getComponent(), e.getX(), e.getY()); 387 } 388 } 389 }); 390 391////////////////////////////////////////////////////////////// 392 393 jPanel_4 = new JPanel(); 394 jPanel_4.setLayout(new BorderLayout()); 395 jTabbedPane.addTab(tabNames[i++], jPanel_4); 396 jTabbedPane.setMnemonicAt(0, KeyEvent.VK_4); 397 398 log_memo_4 = new JTextArea(); 399 log_memo_4.setLineWrap(true); 400 JScrollPane scrollPane_4 = new JScrollPane(log_memo_4, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 401 jPanel_4.add(scrollPane_4); 402 403 LineNumberHeaderView lineNumberHeader_4 = new LineNumberHeaderView(); 404 lineNumberHeader_4.setLineHeight(16); 405 scrollPane_4.setRowHeaderView(lineNumberHeader_4); 406 407 JMenuItem item_4 = new JMenuItem("clear"); 408 item_4.addActionListener(new ActionListener() { 409 public void actionPerformed(ActionEvent e) { 410 item_4.setText(""); 411 } 412 }); 413 414 JPopupMenu popupMenu_4 = new JPopupMenu(); 415 popupMenu_4.add(item_4); 416 417 log_memo_4.add(popupMenu_4); 418 log_memo_4.addMouseListener(new MouseAdapter() { 419 @Override 420 public void mousePressed(MouseEvent e) { 421 if (e.getButton() == MouseEvent.BUTTON3) { 422 popupMenu_4.show(e.getComponent(), e.getX(), e.getY()); 423 } 424 } 425 }); 426 427////////////////////////////////////////////////////////////// 428 429 jPanel_5 = new JPanel(); 430 jPanel_5.setLayout(new BorderLayout()); 431 jTabbedPane.addTab(tabNames[i++], jPanel_5); 432 jTabbedPane.setMnemonicAt(0, KeyEvent.VK_5); 433 434 log_memo_5 = new JTextArea(); 435 log_memo_5.setLineWrap(true); 436 JScrollPane scrollPane_5 = new JScrollPane(log_memo_5, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 437 jPanel_5.add(scrollPane_5); 438 439 LineNumberHeaderView lineNumberHeader_5 = new LineNumberHeaderView(); 440 lineNumberHeader_5.setLineHeight(16); 441 scrollPane_5.setRowHeaderView(lineNumberHeader_5); 442 443 JMenuItem item_5 = new JMenuItem("clear"); 444 item_5.addActionListener(new ActionListener() { 445 public void actionPerformed(ActionEvent e) { 446 item_5.setText(""); 447 } 448 }); 449 450 JPopupMenu popupMenu_5 = new JPopupMenu(); 451 popupMenu_5.add(item_5); 452 453 log_memo_5.add(popupMenu_5); 454 log_memo_5.addMouseListener(new MouseAdapter() { 455 @Override 456 public void mousePressed(MouseEvent e) { 457 if (e.getButton() == MouseEvent.BUTTON3) { 458 popupMenu_5.show(e.getComponent(), e.getX(), e.getY()); 459 } 460 } 461 }); 462 463////////////////////////////////////////////////////////////// 464 465 jPanel_6 = new JPanel(); 466 jPanel_6.setLayout(new BorderLayout()); 467 jTabbedPane.addTab(tabNames[i++], jPanel_6); 468 jTabbedPane.setMnemonicAt(0, KeyEvent.VK_6); 469 470 log_memo_6 = new JTextArea(); 471 log_memo_6.setLineWrap(true); 472 JScrollPane scrollPane_6 = new JScrollPane(log_memo_6, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 473 jPanel_6.add(scrollPane_6); 474 475 LineNumberHeaderView lineNumberHeader_6 = new LineNumberHeaderView(); 476 lineNumberHeader_6.setLineHeight(16); 477 scrollPane_6.setRowHeaderView(lineNumberHeader_6); 478 479 JMenuItem item_6 = new JMenuItem("clear"); 480 item_6.addActionListener(new ActionListener() { 481 public void actionPerformed(ActionEvent e) { 482 item_6.setText(""); 483 } 484 }); 485 486 JPopupMenu popupMenu_6 = new JPopupMenu(); 487 popupMenu_6.add(item_6); 488 489 log_memo_6.add(popupMenu_6); 490 log_memo_6.addMouseListener(new MouseAdapter() { 491 @Override 492 public void mousePressed(MouseEvent e) { 493 if (e.getButton() == MouseEvent.BUTTON3) { 494 popupMenu_6.show(e.getComponent(), e.getX(), e.getY()); 495 } 496 } 497 }); 498 } 499 500 private final StringBuilder sb = new StringBuilder(); 501 private Container getMainPanel() { 502 mainPanel = new JPanel(); 503 mainPanel.setLayout(null); 504 505 panel2 = new JPanel(); 506 panel2.setLayout(new GridLayout(1, 1)); 507 508 String host_list[] = {"192.168.2.4:9876","10.10.1.140:9876;10.10.1.160:9876"}; 509 label_host = new JLabel("host"); 510 comboBox_host = new JComboBox<>(host_list); 511 comboBox_host.setEditable(true); 512 513 label_group = new JLabel("group"); 514 text_group = new JTextField("RdtBenchmark"); 515 516 label_instance = new JLabel("instance"); 517 text_instance = new JTextField("RdtBenchmark001"); 518 519 checkBox1 = new JCheckBox("轨迹数据"); 520 checkBox2 = new JCheckBox("报警数据"); 521 checkBox3 = new JCheckBox("指令回复"); 522 checkBox4 = new JCheckBox("图片数据"); 523 checkBox5 = new JCheckBox("透传数据"); 524 checkBox6 = new JCheckBox("业务数据"); 525 526 label_vehicle_id = new JLabel("vehicleID"); 527 text_vehicle_id = new JTextField(); 528 529 exec_button = new JButton("go"); 530 exec_button.addActionListener(new ActionListener() { 531 @Override 532 public void actionPerformed(ActionEvent e) { 533 if(text_group.getText().isEmpty()){ 534 doAddLog_0("请输入服务组名"); 535 return; 536 } 537 538 if(text_instance.getText().isEmpty()){ 539 doAddLog_0("请输入实例名"); 540 return; 541 } 542 543 String addrs = comboBox_host.getSelectedItem().toString().trim(); 544 String group = text_group.getText().trim(); 545 String instance = text_instance.getText().trim(); 546 547 doAddLog_0("::::::::::MQ address: " + addrs); 548 doAddLog_0("::::::::::MQ group: " + group); 549 doAddLog_0("::::::::::MQ instance: " + instance); 550 551 consumer.setup(addrs, group, instance); 552 553 554 EnumSet<RdtType> data_types = EnumSet.noneOf(RdtType.class); 555 if(checkBox1.isSelected()) 556 data_types.add(RdtType.RDT_TRACK); 557 558 if(checkBox2.isSelected()) 559 data_types.add(RdtType.RDT_ALARM); 560 561 if(checkBox3.isSelected()) 562 data_types.add(RdtType.RDT_REPLY); 563 564 if(checkBox4.isSelected()) 565 data_types.add(RdtType.RDT_IMAGE); 566 567 if(checkBox5.isSelected()) 568 data_types.add(RdtType.RDT_TRANS); 569 570 if(checkBox6.isSelected()) 571 data_types.add(RdtType.RDT_OPERA); 572 573 574 if (data_types.isEmpty()){ 575 doAddLog_0("请选择订阅数据类型"); 576 return; 577 } 578 579 try { 580 consumer.subscribe(data_types); 581 } catch (Exception e2) { 582 doAddLog_0(e2.getMessage()); 583 return; 584 } 585 586 consumer.registerListener(listener()); 587 588 try { 589 consumer.start(); 590 isOK = true; 591 592 doAddLog_0("::::::::::consumer start."); 593 } catch (Exception e1) { 594 doAddLog_0(e1.getMessage()); 595 } 596 } 597 }); 598 599 //host 600 label_host.setBounds(30, 10, JLABEL_WIDTH, JLABEL_HEIGHT); 601 comboBox_host.setBounds(30, label_host.getY() + label_host.getHeight(), 200, JTEXTFIELD_HEIGHT); 602 603 //group 604 label_group.setBounds(comboBox_host.getX() + comboBox_host.getWidth() + 5, 10, JLABEL_WIDTH, JLABEL_HEIGHT); 605 text_group.setBounds(comboBox_host.getX() + comboBox_host.getWidth() + 5, label_group.getY() + label_group.getHeight(), JTEXTFIELD_WIDTH, JTEXTFIELD_HEIGHT); 606 607 //instance 608 label_instance.setBounds(text_group.getX() + text_group.getWidth() + 5, 10, JLABEL_WIDTH, JLABEL_HEIGHT); 609 text_instance.setBounds(text_group.getX() + text_group.getWidth() + 5, label_instance.getY() + label_instance.getHeight(), JTEXTFIELD_WIDTH, JTEXTFIELD_HEIGHT); 610 611 checkBox1.setBounds(text_instance.getX() + text_instance.getWidth(), 10, JLABEL_WIDTH, JLABEL_HEIGHT); 612 checkBox2.setBounds(text_instance.getX() + text_instance.getWidth(), checkBox1.getY() + checkBox1.getHeight(), JLABEL_WIDTH, JLABEL_HEIGHT); 613 614 checkBox3.setBounds(checkBox1.getX() + checkBox1.getWidth(), 10, JLABEL_WIDTH, JLABEL_HEIGHT); 615 checkBox4.setBounds(checkBox1.getX() + checkBox1.getWidth(), checkBox3.getY() + checkBox3.getHeight(), JLABEL_WIDTH, JLABEL_HEIGHT); 616 617 checkBox5.setBounds(checkBox3.getX() + checkBox3.getWidth(), 10, JLABEL_WIDTH, JLABEL_HEIGHT); 618 checkBox6.setBounds(checkBox3.getX() + checkBox3.getWidth(), checkBox5.getY() + checkBox5.getHeight(), JLABEL_WIDTH, JLABEL_HEIGHT); 619 620 //vehicle_id 621 label_vehicle_id.setBounds(checkBox5.getX() + checkBox5.getWidth() + 5, 10, JLABEL_WIDTH, JLABEL_HEIGHT); 622 text_vehicle_id.setBounds(checkBox5.getX() + checkBox5.getWidth() + 5, label_vehicle_id.getY() + label_vehicle_id.getHeight(), JTEXTFIELD_WIDTH, JTEXTFIELD_HEIGHT); 623 624 //go 625 exec_button.setBounds(text_vehicle_id.getX() + text_vehicle_id.getWidth() + 20, label_vehicle_id.getY() + label_vehicle_id.getHeight() - 2, JBUTTON_WIDTH, JBUTTON_HEIGHT); 626 627 //panel2 628 panel2.setBounds(0, 629 comboBox_host.getY() + comboBox_host.getHeight() + 20, 630 this.width -17, 631 height - comboBox_host.getY() - comboBox_host.getHeight()-60 632 ); 633 634 mainPanel.add(label_host); 635 mainPanel.add(comboBox_host); 636 637 mainPanel.add(label_group); 638 mainPanel.add(text_group); 639 640 mainPanel.add(label_instance); 641 mainPanel.add(text_instance); 642 643 mainPanel.add(checkBox1); 644 mainPanel.add(checkBox2); 645 mainPanel.add(checkBox3); 646 mainPanel.add(checkBox4); 647 mainPanel.add(checkBox5); 648 mainPanel.add(checkBox6); 649 650 mainPanel.add(label_vehicle_id); 651 mainPanel.add(text_vehicle_id); 652 653 mainPanel.add(exec_button); 654 655 layoutComponents(); 656 panel2.add(jTabbedPane); 657 658 mainPanel.add(panel2); 659 660 return mainPanel; 661 } 662 663 /** 664 * @return 665 */ 666 private IRdtListener listener() { 667 return new IRdtListener() { 668 public void onTrack(ObjTrack _data) { 669 cnt[0].incrementAndGet(); 670 doAddLog_1(_data.toString()); 671 } 672 673 public void onAlarm(ObjAlarm _data) { 674 cnt[1].incrementAndGet(); 675 doAddLog_2(_data.toString()); 676 } 677 678 public void onReply(ObjReply _data) { 679 cnt[2].incrementAndGet(); 680 doAddLog_3(_data.toString()); 681 } 682 683 public void onImage(ObjImage _data) { 684 cnt[3].incrementAndGet(); 685 doAddLog_4(_data.toString()); 686 } 687 688 public void onTrans(ObjTrans _data) { 689 cnt[4].incrementAndGet(); 690 doAddLog_5(_data.toString()); 691 } 692 693 public void onOpera(ObjOpera _data) { 694 cnt[5].incrementAndGet(); 695 doAddLog_6(_data.toString()); 696 } 697 }; 698 } 699 700 public void doAddLog_0(final String _data){ 701 if(log_memo_0.getLineCount() > 1000) 702 log_memo_0.setText(""); 703 704 log_memo_0.append(_data); 705 log_memo_0.append("\r\n"); 706 } 707 708 public void doAddLog_1(final String _data){ 709 if(log_memo_1.getLineCount() > 1000) 710 log_memo_1.setText(""); 711 712 log_memo_1.append(_data); 713 log_memo_1.append("\r\n"); 714 } 715 716 public void doAddLog_2(final String _data){ 717 if(log_memo_2.getLineCount() > 1000) 718 log_memo_2.setText(""); 719 720 log_memo_2.append(_data); 721 log_memo_2.append("\r\n"); 722 } 723 724 public void doAddLog_3(final String _data){ 725 if(log_memo_3.getLineCount() > 1000) 726 log_memo_3.setText(""); 727 728 log_memo_3.append(_data); 729 log_memo_3.append("\r\n"); 730 } 731 732 public void doAddLog_4(final String _data){ 733 if(log_memo_4.getLineCount() > 1000) 734 log_memo_4.setText(""); 735 736 log_memo_4.append(_data); 737 log_memo_4.append("\r\n"); 738 } 739 740 public void doAddLog_5(final String _data){ 741 if(log_memo_5.getLineCount() > 1000) 742 log_memo_5.setText(""); 743 744 log_memo_5.append(_data); 745 log_memo_5.append("\r\n"); 746 } 747 748 public void doAddLog_6(final String _data){ 749 if(log_memo_6.getLineCount() > 1000) 750 log_memo_6.setText(""); 751 752 log_memo_6.append(_data); 753 log_memo_6.append("\r\n"); 754 } 755 756 public static void main(String[] args) { 757 new App(); 758 } 759}

LineNumberHeaderView.java

1package com.etrans.etsv5.app.rdt.benchmark; 2 3import java.awt.Color; 4import java.awt.Dimension; 5import java.awt.Font; 6import java.awt.FontMetrics; 7import java.awt.Graphics; 8import java.awt.Rectangle; 9 10import javax.swing.JComponent; 11 12/** 13 * 版权所有 (C) 2016 ® E-trans Company <br /> 14 * 单元名称: LineNumberHeaderView.java <br /> 15 * 说 明: <br /> 16 * 作 者: yunnet <br /> 17 * 创建时间: 2016年11月2日 下午9:29:18 <br /> 18 * 最后修改: 2016年11月2日 下午9:29:18 <br /> 19 * 修改历史: <br /> 20 */ 21 22public class LineNumberHeaderView extends JComponent { 23 private static final long serialVersionUID = 9177903177690864500L; 24 25 private final Font DEFAULT_FONT = new Font(Font.MONOSPACED, Font.PLAIN, 13); 26 public final Color DEFAULT_BACKGROUD = new Color(228, 228, 228); 27 public final Color DEFAULT_FOREGROUD = Color.BLACK; 28 public final int nHEIGHT = Integer.MAX_VALUE - 1000000; 29 public final int MARGIN = 5; 30 private int lineHeight; 31 private int fontLineHeight; 32 private int currentRowWidth; 33 private FontMetrics fontMetrics; 34 35 public LineNumberHeaderView() { 36 setFont(DEFAULT_FONT); 37 setForeground(DEFAULT_FOREGROUD); 38 setBackground(DEFAULT_BACKGROUD); 39 setPreferredSize(9999); 40 } 41 42 public void setPreferredSize(int row) { 43 int width = fontMetrics.stringWidth(String.valueOf(row)); 44 if (currentRowWidth < width) { 45 currentRowWidth = width; 46 setPreferredSize(new Dimension(2 * MARGIN + width + 1, nHEIGHT)); 47 } 48 } 49 50 @Override 51 public void setFont(Font font) { 52 super.setFont(font); 53 fontMetrics = getFontMetrics(getFont()); 54 fontLineHeight = fontMetrics.getHeight(); 55 } 56 57 public int getLineHeight() { 58 if (lineHeight == 0) 59 return fontLineHeight; 60 61 return lineHeight; 62 } 63 64 public void setLineHeight(int lineHeight) { 65 if (lineHeight > 0) 66 this.lineHeight = lineHeight; 67 } 68 69 public int getStartOffset() { 70 return 4; 71 } 72 73 @Override 74 protected void paintComponent(Graphics g) { 75 int nlineHeight = getLineHeight(); 76 int startOffset = getStartOffset(); 77 Rectangle drawHere = g.getClipBounds(); 78 g.setColor(getBackground()); 79 g.fillRect(drawHere.x, drawHere.y, drawHere.width, drawHere.height); 80 g.setColor(getForeground()); 81 82 int startLineNum = (drawHere.y / nlineHeight) + 1; 83 int endLineNum = startLineNum + (drawHere.height / nlineHeight); 84 int start = (drawHere.y / nlineHeight) * nlineHeight + nlineHeight - startOffset; 85 86 for (int i = startLineNum; i <= endLineNum; ++i) { 87 String lineNum = String.valueOf(i); 88 int width = fontMetrics.stringWidth(lineNum); 89 g.drawString(lineNum + " ", MARGIN + currentRowWidth - width - 1, start); 90 start += nlineHeight; 91 } 92 93 setPreferredSize(endLineNum); 94 } 95 96}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )