帮助在Swing中绘制自定义图形

时间:2011-01-15 04:49:47

标签: java swing canvas drawing

我知道我没有在大型机中调用graphics paint命令来显示它。但我不知道怎么做。 提前谢谢

import java.awt.*;
import javax.swing.*;
public class MainFrame extends JFrame {

private static Panel panel = new Panel();

public MainFrame() {
    panel.setBackground(Color.white);
    Container c = getContentPane();
    c.add(panel);
}

public void paint(Graphics g) {
    g.drawString("abc", 20, 20);
}

public static void main(String[] args) {
    MainFrame frame = new MainFrame();
    frame.setVisible(true);
    frame.setSize(600, 400);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

4 个答案:

答案 0 :(得分:2)

阅读Custom Painting上Swing教程中的部分,了解有关绘画以及其他Swing基础知识的工作示例。

另外,不要使用Panel,即AWT类。使用JPanel这是一个Swing类。

答案 1 :(得分:1)

创建一个扩展JComponent的新类,覆盖public void paintComponent(Graphics g)方法并绘制字符串。

将此覆盖的组件添加到您的框架中。喜欢:frame.getContentPane().add(customComponent);

答案 2 :(得分:1)

首先,您需要在Event Dispatch Thread中创建AWT / Swing内容。其次,你不应该覆盖主窗口上的油漆。您需要创建Component的子类并覆盖paintComponent(Graphics g)方法,并在此处放置paint中的任何内容。在此之后,将组件添加到框架中。您可能需要根据需要搞乱布局管理器。

答案 3 :(得分:0)

您可以创建一个扩展JPanel的类:

 public class MyPanel extends JPanel{         
      public MyPanel(){
         setBackground(Color.WHITE);
      }

      public void paintComponent(Graphics g) {
        g.drawString("abc", 20, 20);
      }

 }

然后您可以将该面板添加到JFrame。

 public class MainFrame extends JFrame {

     private JPanel panel;

     public MainFrame() {
         panel = new MyPanel();    
         add(panel, BorderLayout.CENTER);
     }


     public static void main(String[] args) {
         MainFrame frame = new MainFrame();

         frame.setSize(600, 400);
         frame.setResizable(false);
         frame.setLocationRelativeTo(null);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setVisible(true);
    }
 }