2011-01-15 6 views
0

私は、メインフレームでグラフィックスペイントコマンドを表示していないと知っています。しかし、私はどのようにわからない。事前スイングでカスタムグラフィックスを描くのに役立つ

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); 
    } 
} 

答えて

2

絵画や他のSwingの基礎に関する作業例については、Custom PaintingのSwingチュートリアルのセクションを読んでください。

また、AWTクラスであるPanelを使用しないでください。 SwingクラスのJPanelを使用します。

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

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

} 

は、その後、あなたのJFrameにそのパネルを追加することができます。

+0

okです。だから私はサブクラスとしてpaintクラスでsuper.paintComponent(g)を実行する必要がありました...またはそのようなもの...私はそれを続けて遊びます。ありがとう – java

+0

"サブクラスとしてペイントクラスで" - これは意味をなさない。ここで何を言おうとしていますか? –

1

で おかげでJComponentのは、公共ボイドpaintComponent(グラフィックスグラム)メソッドをオーバーライドして、文字列を描画拡張する新しいクラスを作成します。

このオーバーライドされたコンポーネントをフレームに追加します。 Like:frame.getContentPane().add(customComponent);

1

まず、Event Dispatch ThreadにAWT/Swingのものを作成する必要があります。次に、メインウィンドウのペイントをオーバーライドしないでください。 Componentのサブクラスを作成し、paintComponent(Graphics g)メソッドをオーバーライドする必要があります。これは、現時点ではpaintにあるものを入れます。その後、コンポーネントをフレームに追加します。あなたのニーズに応じてレイアウトマネージャーを混乱させる必要があるかもしれません。

0

あなたはこのようにJPanelを拡張するクラスを作成することができます。

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); 
    } 
} 
関連する問題