- ベストアンサー
Javaでのグラフィック表示のエラー解決方法
- Javaでのグラフィック表示において、画面上部に表示させたい図形が一瞬表示されてから消える問題が発生しています。エリアを明確に分ける方法をご教示いただけませんか?
- 他言語のDelphiやC++Builderのように、グラフィックのエリアとコントロールのエリアを分ける方法を知りたいです。
- Javaでグラフィック表示を行っている際、図形が一瞬表示されてから消えてしまう現象が発生します。この問題を解決する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 Swingでしたらこんな感じでいけると思います。 import宣言や起動クラスは端折ってます。 コントロール部のパネルと描画部分のパネルを作ってメインとなるフレームで使用するイメージです。 ==== MainFrame.java public class MainFrame extends JFrame { private GraphicsPanel f_graphicsPanel; private ButtonPanel f_buttonPanel; public MainFrame() { // フレームの設定 this.setLayout ( null ); this.setSize ( 800, 250 ); this.setTitle ( "Q8240834" ); this.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ); f_graphicsPanel = new GraphicsPanel(); f_graphicsPanel.setBounds ( 0, 0, 590, 250 ); this.add ( f_graphicsPanel ); f_buttonPanel = new ButtonPanel ( this ); f_buttonPanel.setBounds ( 600, 0, 200, 250 ); this.add ( f_buttonPanel ); } public void changeColor() { f_graphicsPanel.changeColor(); } } ==== GraphicsPanel.java public class GraphicsPanel extends JPanel { private Color f_colorFore; public GraphicsPanel() { f_colorFore = Color.WHITE; } public void paintComponent ( Graphics g ) { g.setColor ( new Color(0,0,0) ); g.fillRect ( 0, 0, this.getWidth(), this.getHeight() ); g.setColor ( f_colorFore ); g.fillRect ( 10, 10, 200, 150 ); } public void changeColor() { Random rnd = new Random(); f_colorFore = new Color ( rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256) ); repaint(); } } ==== ButtonPanel.java public class ButtonPanel extends JPanel implements ActionListener { private MainFrame f_mainFrame; private JButton btn1; private JButton btn2; public ButtonPanel ( MainFrame _mainFrame ) { f_mainFrame = _mainFrame; this.setLayout ( new BorderLayout() ); this.setBackground ( Color.DARK_GRAY ); btn1 = new JButton ( "ボタン1" ); this.add ( BorderLayout.NORTH, btn1 ); btn2 = new JButton ( "変更" ); btn2.setActionCommand ( "change" ); btn2.addActionListener ( this ); this.add ( BorderLayout.CENTER, btn2 ); } public void actionPerformed ( ActionEvent _e ) { String strCommand = _e.getActionCommand(); if ( "change".equals(strCommand) ) { f_mainFrame.changeColor(); } } }
お礼
御礼が遅くなりまして申し訳ございませんでした。 試してみて、出来る事が確認できました。 ありがとうございました。 また、何かあったらよろしくお願いします。