- ベストアンサー
文字列の表示
- 文字列の表示方法を教えてください
- Graph2クラスで作った文字と直線をMainFrameクラスで作ったフレームに表示させたい
- 表示されない原因と改善方法を教えてください
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Graph2はJAppletやのうてJPanelから派生させて、Frameにaddしてあげて、setSizeしてあげて、repaintしないとだめよ。もう少し良いコードに直せると思うが、ちょちょっと手直ししたのを載せる。直したところにはコメントを入れてある。 import java.awt.*; import java.awt.event.*; import javax.swing.*; class Graph1 { public static void main(String argv[]) { MainFrame MF = new MainFrame(); MF.setVisible(true); } } class MainFrame extends Frame { Graph2 aGraph2; // aGraph2は一応今後の拡張のためにクラス変数に public MainFrame() { setLocation(500 , 200); setTitle("MainFrame"); setSize(500 , 300); setLayout(null); aGraph2 = new Graph2(); aGraph2.setVisible(true); // show()は古い this.add(aGraph2); // this(=MainFrame)の上に乗せる aGraph2.setSize(300, 250); // フレームに合わせて大きさを変える aGraph2.repaint(); // paint(Graphics)を呼び出す addWindowListener(new MyWinL()); } private class MyWinL extends WindowAdapter { public void windowClosing(WindowEvent e) { System.out.println("終了しました。\n"); System.exit(0); } } } class Graph2 extends JPanel { // JPanelから派生 public void paint(Graphics g) { g.setColor(Color.GRAY); for (int i=0; i < 5; i++) { g.drawLine(0, 50*i, 400, 50*i); } for (int i=0; i < 9; i++) { g.drawLine(50*i, 0, 50*i, 200); } Font font1 = new Font("Serif" , Font.PLAIN,30); Font font2 = new Font("SansSerif" , Font.PLAIN,30); Font font3 = new Font("MS P明朝" , Font.PLAIN,30); Font font4 = new Font("MS Pゴシック" , Font.PLAIN,30); g.setColor(Color.RED); g.setFont(font1); g.drawString("Hello! Java world!", 50, 50); g.setFont(font2); g.drawString("Hello! Java world!", 50, 100); g.setColor(Color.BLUE); g.setFont(font3); g.drawString("Hello! Java world!", 50, 150); g.setFont(font4); g.drawString("Hello! Java world!", 50, 200); }; }
お礼
とても参考になりました。ありがとうございました。