📄 mainframe.java~7~
字号:
package jthreadsynch;import java.awt.*;import java.awt.event.*;import javax.swing.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author unascribed * @version 1.0 */public class MainFrame extends JFrame { private JPanel contentPane; private BorderLayout borderLayout1 = new BorderLayout(); private JLabel jLabel1 = new JLabel(); public JProgressBar jProgressBar1 = new JProgressBar(); private JButton jButton1 = new JButton(); private JScrollPane jScrollPane1 = new JScrollPane(); private JTextArea jTextArea1 = new JTextArea(); private int sharedData=0; private boolean dataAvailable=false; private Producer pro=null; //Construct the frame public MainFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { //setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]"))); contentPane = (JPanel) this.getContentPane(); jLabel1.setFont(new java.awt.Font("Dialog", 0, 14)); jLabel1.setHorizontalAlignment(SwingConstants.CENTER); jLabel1.setText("线程同步互斥"); contentPane.setLayout(borderLayout1); this.setSize(new Dimension(383, 204)); this.setTitle("JThreadSynch"); jButton1.setFont(new java.awt.Font("Dialog", 0, 14)); jButton1.setToolTipText(""); jButton1.setText("Start"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton1_actionPerformed(e); } }); jProgressBar1.setOrientation(JProgressBar.VERTICAL); jProgressBar1.setPreferredSize(new Dimension(150, 148)); contentPane.add(jLabel1, BorderLayout.NORTH); contentPane.add(jProgressBar1, BorderLayout.WEST); contentPane.add(jButton1, BorderLayout.SOUTH); contentPane.add(jScrollPane1, BorderLayout.CENTER); jScrollPane1.getViewport().add(jTextArea1, null); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } public synchronized int setSharedData(){ if(this.dataAvailable){ try{ wait(); }catch(Exception err){ err.printStackTrace(); } } this.sharedData++; this.jTextArea1.append("Producer working ...."+"NewData is"+String.valueOf(this.sharedData)+"\n"); if(this.sharedData==100){ this.jTextArea1.append("Producer has done all things"+"Consumer,it's time to wake up! "+"\n"); this.dataAvailable=true; notifyAll(); } return this.sharedData; } public synchronized int getSharedData(){ if(!this.dataAvailable){ try{ wait(); }catch(Exception err){ err.printStackTrace(); } } this.sharedData--; this.jTextArea1.append("Consumer is working ....."+"NewData is "+String.valueOf(this.sharedData)+"\n"); if(this.sharedData==0){ this.jTextArea1.append("Consumer has done all things"+"Producer,it's time to wake up! "+"\n"); this.dataAvailable=false; notifyAll(); } return this.sharedData; } void jButton1_actionPerformed(ActionEvent e) { if(((JButton)e.getSource()).getText().equals("Start")){ ((JButton)e.getSource()).setText("Stop"); pro=new Producer(this); pro.start(); }else{ ((JButton)e.getSource()).setText("Start"); pro.stopped=true; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -