2015-12-07 20 views
0

所以这是我当前项目的注释中给出的示例。通常我会运行示例代码并使用它来查看一切是如何工作的。但是我不确定如何正确调用示例代码中的函数。使用eclipse的Java中的GUI应用程序

这东西是给我:

import java.awt.Color; 
import java.awt.Graphics; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Draw extends JPanel implements ActionListener 
{ 
    JTextField tfInfo; 
    JLabel lblColor, lblShapes; 
    JCheckBox cbRed, cbBlue; 
    ButtonGroup shapes; 
    JRadioButton rbCircle, rbSquare; 
    JButton btnSubmit; 
    public Draw() 
    { 
     setLayout(new FlowLayout(FlowLayout.CENTER,5,5)); 
     tfInfo = new JTextField("Color & Shapes", 15); 
     lblColor = new JLabel("Colors:"); 
     cbRed = new JCheckBox("Red"); 
     cbBlue = new JCheckBox("Blue"); 
     lblShapes = new JLabel("Shapes:"); 
     shapes = new ButtonGroup(); 
     rbCircle = new JRadioButton("Circle"); 
     rbSquare = new JRadioButton("Square"); 
     btnSubmit = new JButton("Submit"); 
     btnSubmit.addActionListener(this); 
     add(tfInfo); 
     add(lblColor); 
     add(cbRed); 
     add(cbBlue); 
     add(lblShapes); 
     add(rbCircle); 
     add(rbSquare); 
     add(btnSubmit); 
     shapes.add(rbCircle); 
     shapes.add(rbSquare); 
    } 
    public static void main(String [] args) 
    { 
     Draw n = new Draw(); 
     n.setVisible(true); 
    } 
    public void actionPerformed(ActionEvent a) 
    { 
     if(a.getSource() == btnSubmit) 
     { 
      if(cbRed.isSelected()&&cbBlue.isSelected()) 
      { 
       if(rbCircle.isSelected()) 
       { 
        tfInfo.setText("urple Circle"); 
       } 
       else if(rbSquare.isSelected()) 
       { 
        tfInfo.setText("Purple Square"); 
       } 
      } 
      else if(cbRed.isSelected()) 
      { 
       if(rbCircle.isSelected()) 
       { 
        tfInfo.setText("Red Circle"); 
       } 
       else if(rbSquare.isSelected()) 
       { 
        tfInfo.setText("Red Square"); 
       }  
      } 
      else if(cbBlue.isSelected()) 
      { 
       if(rbCircle.isSelected()) 
       { 
        tfInfo.setText("Blue Circle"); 
       } 
      } 
      else if(rbSquare.isSelected()) 
      { 
       tfInfo.setText("Blue Square"); 
      } 
     } 
    } 
    public class MApp extends JPanel implements MouseListener 
    { 
     private boolean clicked; 
     private Rectangle r; 
     public MApp() 
     { 
      clicked = false; 
      r = new Rectangle(10, 10, 50, 50); 
      addMouseListener(this); 
     } 
     public void paintComponent(Graphics g) 
     { 
      if(clicked) 
      { 
       g.setColor(Color.BLUE); 
      } 
      else 
      { 
       g.setColor(Color.RED); 
      } 
      g.fillRect((int)r.getX(), (int)r.getY(), 
      (int)r.getWidth(), (int)r.getHeight()); 
     } 
     public void mouseClicked (MouseEvent e) 
     { 
      Point p = new Point(e.getX(),e.getY()); 
      if(r.contains(p)) 
      { 
       clicked = !clicked; 
      } 
      repaint(); 
     } 
     public void mousePressed (MouseEvent evnt) {} 
     public void mouseReleased (MouseEvent evnt) {} 
     public void mouseEntered (MouseEvent evnt) {} 
     public void mouseExited (MouseEvent evnt) {} 
    } 
} 
+0

你应该看看[创建一个GUI与JFC/Swing](http://docs.oracle.com。 com/javase/tutorial/uiswing /),[如何使用按钮,复选框和单选按钮](http://docs.oracle.com/javase/tutorial/uiswing/components/button.html),[如何使用按钮,复选框和单选按钮]编写Action Listeners](http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html),[在AWT和Swing中绘制](http://www.oracle.com/technetwork/java /painting-140037.html)和[执行自定义绘画](http://docs.oracle.com/javase/tutorial/uiswing/painting/) – MadProgrammer

+1

Swing(和大多数GUI)的工作方式与基于控制台的程序不同,这是因为它们是事件驱动的,并且有很多正在发生的“黑盒子”代码(比如实际调用'actionPerformed'方法的方式)。事实上,大多数情况下,你并不在乎。你知道你可以在控件上添加一个'ActionListener',比如'JButton',当发生规定的事件时(比如用户点击按钮),它会调用你的'actionPerformed'方法 – MadProgrammer

回答

1

我想我会分解成以下几个部分:

1)把MAPP到它自己的Java文件。另外,我改变了mouseClicked中的repaint():paintComponent(getGraphics());你的新的Java文件将是这样的:

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Point; 
import java.awt.Rectangle; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 

import javax.swing.JPanel; 

public class MApp extends JPanel implements MouseListener 
{ 
    private boolean clicked; 
    private Rectangle r; 
    public MApp() 
    { 
     clicked = false; 
     r = new Rectangle(10, 10, 50, 50); 
     addMouseListener(this); 
    } 
    public void paintComponent(Graphics g) 
    { 
     if(clicked) 
     { 
      g.setColor(Color.BLUE); 
     } 
     else 
     { 
      g.setColor(Color.RED); 
     } 
     g.fillRect((int)r.getX(), (int)r.getY(), 
     (int)r.getWidth(), (int)r.getHeight()); 
    } 
    public void mouseClicked (MouseEvent e) 
    { 
     Point p = new Point(e.getX(),e.getY()); 
     if(r.contains(p)) 
     { 
      clicked = !clicked; 
     } 
     paintComponent(getGraphics()); 
    } 
    public void mousePressed (MouseEvent evnt) {} 
    public void mouseReleased (MouseEvent evnt) {} 
    public void mouseEntered (MouseEvent evnt) {} 
    public void mouseExited (MouseEvent evnt) {} 
} 

下一步:创建一个主文件,像这样:

import javax.swing.JFrame; 

public class Tester { 

    public static JFrame window = new JFrame("Graphics"); 

    public static void main(String[] args) { 
     window.setBounds(100, 100,800, 800); 
     window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     window.setLayout(null); 

     MApp m = new MApp(); 
     m.setBounds(100,100,50,50); 
     window.add(m); 

     Draw d = new Draw(); 
     d.setBounds(0, 0, window.getWidth(), 80); 
     window.add(d); 

     window.setVisible(true); 
    } 

} 

(不要忘记从你的绘图类中删除了MAPP类)

你将能够运行你的代码并查看正在发生的事情......这只是一个快捷键,但你会得到这个想法