想创建一个带鼠标输入的框架并实现drawLines()

时间:2015-06-18 08:02:40

标签: java swing

我正在尝试创建一个从鼠标获取输入的帧,并使用drawLines()在帧上创建x / o网格。但我只能做到两个中的一个。

这是我的代码:

public class Test extends JPanel {
    public static void main(String[] args) {

        Test t = new Test();  
        t.dispFrame();

    }

    public static void dispFrame()
     {
        JFrame frame = new JFrame("My New Frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(300, 300));

        frame.setResizable(false);

         JPanel panel=new JPanel();
         panel.addMouseListener(new MouseListener()
         {                         
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println(":MOUSE_CLICK_EVENT:");
            }

             @Override
             public void mousePressed(MouseEvent e) {
                 System.out.println("\n:MOUSE_PRESSED_EVENT:");
             }

             @Override
             public void mouseReleased(MouseEvent e) {
                 System.out.println(":MOUSE_RELEASED_EVENT:");
             }

             @Override
             public void mouseEntered(MouseEvent e) {
                 System.out.println(":MOUSE_ENTER_EVENT:");
             }

             @Override
             public void mouseExited(MouseEvent e) {
                 System.out.println(":MOUSE_EXITED_EVENT:");
             }

         });
         frame.add(panel);
         frame.pack();
         frame.setVisible(true);
     }

      @Override
      public void paintComponent(Graphics g)
      {
        super.paintComponent(g);
        g.drawLine(30,100,270,100);
        g.drawLine(30,200,270,200);
        g.drawLine(100,35,100,250);
        g.drawLine(200,35,200,250);   
      }
}

1 个答案:

答案 0 :(得分:2)

如果你想覆盖面板上的paintComponent()方法,你应该这样做,

JPanel panel = new JPanel() {
  @Override
  public void paintComponent(Graphics g)
  {
    super.paintComponent(g);
    g.drawLine(30,100,270,100);
    g.drawLine(30,200,270,200);
    g.drawLine(100,35,100,250);
    g.drawLine(200,35,200,250);   
  }
};

在您的代码中,您将覆盖paintComponent()类中的Test,如果您的Test类本身不是子类Component,则会抛出编译时错误