privatestaticvoid createAndShowTestDialog() {
String testInstruction = "This test verify that the BullsEye rings are printed correctly.\n"+ "The printout should show transparent rings with increasing darkness toward the center";
final JDialog dialog = new JDialog();
dialog.setTitle("SaveFileWithoutPrinter");
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
dialog.addWindowListener(new WindowAdapter() {
@Override publicvoid windowClosing(WindowEvent e) {
dialog.dispose();
fail("Main dialog was closed.");
}
});
final JLabel testTimeoutLabel = new JLabel(String.format("Test timeout: %s", convertMillisToTimeStr(testTimeout))); finallong startTime = System.currentTimeMillis(); final Timer timer = new Timer(0, null);
timer.setDelay(1000);
timer.addActionListener((e) -> { int leftTime = testTimeout - (int) (System.currentTimeMillis() - startTime); if ((leftTime < 0) || testFinished) {
timer.stop();
dialog.dispose();
}
testTimeoutLabel.setText(String.format("Test timeout: %s", convertMillisToTimeStr(leftTime)));
});
timer.start();
JTextArea textArea = new JTextArea(testInstruction);
textArea.setEditable(false);
final JButton startTestButton = new JButton("Start Test"); final JButton passButton = new JButton("PASS"); final JButton failButton = new JButton("FAIL");
startTestButton.addActionListener((e) -> {
startTestButton.setEnabled(false); newThread(() -> { try {
doTest();
SwingUtilities.invokeLater(() -> {
passButton.setEnabled(true);
failButton.setEnabled(true);
});
} catch (Throwable t) {
t.printStackTrace();
dialog.dispose();
fail("Exception occurred in a thread executing the test.");
}
}).start();
});
passButton.setEnabled(false);
passButton.addActionListener((e) -> {
dialog.dispose();
pass();
});
failButton.setEnabled(false);
failButton.addActionListener((e) -> {
dialog.dispose();
fail("Transparent ring colors are not printed correctly");
});
publicvoid drawDemo(int w, int h, Graphics2D g2) {
Color reds[] = {Color.red.darker(), Color.red}; for (int N = 0; N < 18; N++) { float i = (N + 2) / 2.0f; float x = (float) (5 + i * (w / 2 / 10)); float y = (float) (5 + i * (h / 2 / 10)); float ew = (w - 10) - (i * w / 10); float eh = (h - 10) - (i * h / 10); float alpha = (N == 0) ? 0.1f : 1.0f / (19.0f - N); if (N >= 16) {
g2.setColor(reds[N - 16]);
} else {
g2.setColor(new Color(0f, 0f, 0f, alpha));
}
g2.fill(new Ellipse2D.Float(x, y, ew, eh));
}
}
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.