import java.awt.Graphics;
public class threadDraw extends javax.swing.JFrame {
public threadDraw() {
initComponents();
this.setTitle("双手画图");
this.setLocationRelativeTo(null);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
leftDraw = new threaddraw.leftDraw();
rightDraw = new threaddraw.rightDraw();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
leftDraw.setBorder(javax.swing.BorderFactory.createTitledBorder("left"));
javax.swing.GroupLayout leftDrawLayout = new javax.swing.GroupLayout(leftDraw);
leftDraw.setLayout(leftDrawLayout);
leftDrawLayout.setHorizontalGroup(
leftDrawLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 195, Short.MAX_VALUE)
);
leftDrawLayout.setVerticalGroup(
leftDrawLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 276, Short.MAX_VALUE)
);
rightDraw.setBorder(javax.swing.BorderFactory.createTitledBorder("right"));
javax.swing.GroupLayout rightDrawLayout = new javax.swing.GroupLayout(rightDraw);
rightDraw.setLayout(rightDrawLayout);
rightDrawLayout.setHorizontalGroup(
rightDrawLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 175, Short.MAX_VALUE)
);
rightDrawLayout.setVerticalGroup(
rightDrawLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(leftDraw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rightDraw, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(leftDraw, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(rightDraw, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(threadDraw.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(threadDraw.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(threadDraw.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(threadDraw.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new threadDraw().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel leftDraw;
private javax.swing.JPanel rightDraw;
// End of variables declaration
}
package threaddraw;
import java.awt.Color;
import java.awt.Graphics;
/**
*
* @author SUIXIN
*/
public class leftDraw extends javax.swing.JPanel implements Runnable {
int angle = 0;
public leftDraw() {
initComponents();
new Thread(this).start();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
}// </editor-fold>
// Variables declaration - do not modify
// End of variables declaration
@Override
public void run() {
while (true) {
this.repaint();
if (angle == 360) {
angle = 0;
}
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
angle = angle + 20;
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
for (int i = 0; i < angle; i++) {
g.drawArc(50, 50, 150,150, 0, i);
}
}
}
package threaddraw;
import java.awt.Color;
import java.awt.Graphics;
public class rightDraw extends javax.swing.JPanel implements Runnable {
int left = 150;
int next = 50;
int right = 50;
int up = 150;
public rightDraw() {
initComponents();
new Thread(this).start();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
}// </editor-fold>
// Variables declaration - do not modify
// End of variables declaration
@Override
public void run() {
while (true) {
while (right < 150) {
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
right = right + 25;
}
while (next < 150) {
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
next = next + 25;
}
while (left > 50) {
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
left = left - 25;
}
while (up >= 50) {
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
up = up - 25;
}
left = 150;
next = 50;
right = 50;
up = 150;
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (int i = 50; i <= right; i++) {
g.drawLine(50, 50, i, 50);
}
for (int i = 50; i <= next; i++) {
g.drawLine(150, 50, 150, i);
}
for (int i = 150; i >= left; i--) {
g.drawLine(150, 150, i, 150);
}
for (int i = 150; i >= up; i--) {
g.drawLine(50, 150, 50, i);
}
}
}