• 締切済み

メニューがぼけます

ダブルバッファの中にメニューを設定するとぼけてしまいます。何かいい方法はありますか? 以下が一応プログラムです import java.awt.*; import java.applet.*; import java.awt.event.*; import java.util.*; public class ex1 extends Applet{ //選択メニュー用の変数 //ファイル名用の変数(1)10の位 Choice f_name_10_ch = new Choice(); //ファイル名用の変数(2)1の位 Choice f_name_1_ch = new Choice(); //裏画面用 Image fb; Graphics g; public void init() { setBackground(Color.black); fb = createImage(1000,1000); g = fb.getGraphics(); } public void paint(Graphics gg) { Font f1= new Font("Courier",Font.BOLD,100); setLayout(null); f_name_10_ch.setBounds(500,200,30,20); f_name_1_ch.setBounds(600,200,30,20); //メニューを設定する f_name_10_ch.add("0"); f_name_10_ch.add("1"); f_name_10_ch.add("2"); f_name_10_ch.add("3"); f_name_10_ch.add("4"); f_name_10_ch.add("5"); f_name_10_ch.add("6"); f_name_10_ch.add("7"); f_name_10_ch.add("8"); f_name_10_ch.add("9"); f_name_1_ch.add("0"); f_name_1_ch.add("1"); f_name_1_ch.add("2"); f_name_1_ch.add("3"); f_name_1_ch.add("4"); f_name_1_ch.add("5"); f_name_1_ch.add("6"); f_name_1_ch.add("7"); f_name_1_ch.add("8"); f_name_1_ch.add("9"); add(f_name_10_ch); add(f_name_1_ch); gg.drawImage(fb,0,0,this); } public void update(Graphics g){ // Update paint(g); } }

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

  • tubumame
  • ベストアンサー率63% (7/11)
回答No.1

こんにちは。 Button,Choice...etcのGUIコンポーネントはダブルバッファリングなどを考える必要はありません。以下のように修正すればちらつきはなくなるでしょう。 import java.awt.*; import java.applet.*; import java.awt.event.*; import java.util.*; public class ex1 extends Applet{ public void init() { //選択メニュー用の変数 //ファイル名用の変数(1)10の位 Choice f_name_10_ch = new Choice(); //ファイル名用の変数(2)1の位 Choice f_name_1_ch = new Choice(); setBackground(Color.black); setLayout(null); f_name_10_ch.setBounds(500,200,30,20); f_name_1_ch.setBounds(600,200,30,20); //メニューを設定する f_name_10_ch.add("0"); f_name_10_ch.add("1"); f_name_10_ch.add("2"); f_name_10_ch.add("3"); f_name_10_ch.add("4"); f_name_10_ch.add("5"); f_name_10_ch.add("6"); f_name_10_ch.add("7"); f_name_10_ch.add("8"); f_name_10_ch.add("9"); f_name_1_ch.add("0"); f_name_1_ch.add("1"); f_name_1_ch.add("2"); f_name_1_ch.add("3"); f_name_1_ch.add("4"); f_name_1_ch.add("5"); f_name_1_ch.add("6"); f_name_1_ch.add("7"); f_name_1_ch.add("8"); f_name_1_ch.add("9"); add(f_name_10_ch); add(f_name_1_ch); } }

program
質問者

補足

後々マウスの動きで表示画面を変えたいと思っているのでできればダブルバッファを考えたいんです

関連するQ&A

  • なんかエラーがでた

    とあるプログラムをeclipseで作ったら問題なく動きました。しかし学校のPCでやると実行時にエラーがでました。それが以下です。 class javax.swing.JFrameにはExit_ON_CLOSEは定義されていません ちなみにソースは以下です import javax.swing.*; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.*; import java.util.Vector; import java.awt.event.* ; public class f_sotu3 extends JFrame { JPanel p; JButton btn1; JTextField tx1; public f_sotu3(){ p = new JPanel(); p.setLayout(null); btn1 = new JButton("検索"); tx1 = new JTextField(); setTitle("卒論"); setBounds( 10, 10, 1100, 1100); btn1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ System.out.println(tx1.getText()); } } ); btn1.setBounds(500,50,100,60); tx1.setBounds(50,170,900,60); tx1.setFont(new Font("MS ゴシック",Font.BOLD,18)); p.add(tx1); p.add(btn1); getContentPane().add(p); } public static void main(String[] args){ /* 自分自身を作成 */ f_sotu3 test = new f_sotu3(); /* 終了処理を追加 */ test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); /* 実際に表示する */ } }

    • ベストアンサー
    • Java
  • javaでgraphicsの描画の件

    今日は javaでgraphicsの描画を行っていますが、CENTERのペインには、描画できますが、 それ以外のペイン(NORTH,WEST、EAST,、SOUTH)には、描画できないように思います。 Q1)この件について、コメント頂けますと大変助かります。 下記に、ソースコードを添付いたします。 =================== package pkg; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Line2D; import javax.swing.JFrame; import javax.swing.JPanel; public class SampleApp extends JFrame { public SampleApp(){ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(600, 300); this.add(new GPanel(), BorderLayout.WEST); this.add(new GPanel(), BorderLayout.CENTER); } public static void main(String[] args) { new SampleApp().setVisible(true); } } class GPanel extends JPanel { @Override public void paintComponent(Graphics g) { super.paintComponent(g); // int w = this.getWidth(); // int h = this.getHeight(); int w=200; int h=200; g.setColor(Color.RED); g.fillOval(0, 0, w/2, h/2); Graphics2D g2 = (Graphics2D)g; g2.draw(new Line2D.Double(40, 40, w,h)); g.setColor(Color.BLUE); g.setFont(new Font("Serif", Font.BOLD, 36)); g.drawString("Graphics draw!", 10, h - 50); // g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.draw(new Line2D.Double(30.0d, 50.0d, 180.0d, 140.0d)); g2.setPaint(Color.PINK); BasicStroke wideStroke = new BasicStroke(8.0f); g2.setStroke(wideStroke); g2.draw(new Line2D.Double(30.0d, 120.0d, 250.0d, 70.0d)); } }

    • ベストアンサー
    • Java
  • createImage()を使いコンパイル

    このプログラムをcreateImage()を使ってイメージを作りたいのですが自分で変更してもコンパイルできません><;どのように変更したらイメージをつくることができるのでしょうか?回答よろしくおねがいしまあす(^^; import java.awt.Color; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import java.awt.image.BufferedImage; import javax.swing.JComponent; import javax.swing.JFrame; class Test extends JComponent implements MouseMotionListener { public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new Test()); frame.setBounds(0 , 0 , 400 , 300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT ON CLOSE); } Image image; public Test() { addMouseMotionListener(this); image = new BufferedImage(400, 300, BufferedImage.TYPE INT RGB); Graphics g = image.getGraphics(); g.setColor(new Color(0xFF, 0xFF, 0xFF)); g.fillRect(0, 0, 400, 300); }public void paintComponent(Graphics g) { g.drawImage(image, 0, 0, this); } public void mouseDragged(MouseEvent e) { Graphics g = image.getGraphics(); g.setColor(new Color(0, 0, 0)); g.fillOval(e.getX() - 5, e.getY() - 5, 5 , 5); repaint(); }public void mouseMoved(MouseEvent e) {} }

  • createImage()を使い コンパイル

    このプログラムをcreateImage()を使ってイメージを作りたいのですが自分で変更してもコンパイルできません><;どのように変更したらイメージをつくることができるのでしょうか?回答よろしくおねがいしまあす(^^; import java.awt.Color; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import java.awt.image.BufferedImage; import javax.swing.JComponent; import javax.swing.JFrame; class Test extends JComponent implements MouseMotionListener { public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new Test()); frame.setBounds(0 , 0 , 400 , 300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT ON CLOSE); } Image image; public Test() { addMouseMotionListener(this); image = new BufferedImage(400, 300, BufferedImage.TYPE INT RGB); Graphics g = image.getGraphics(); g.setColor(new Color(0xFF, 0xFF, 0xFF)); g.fillRect(0, 0, 400, 300); }public void paintComponent(Graphics g) { g.drawImage(image, 0, 0, this); } public void mouseDragged(MouseEvent e) { Graphics g = image.getGraphics(); g.setColor(new Color(0, 0, 0)); g.fillOval(e.getX() - 5, e.getY() - 5, 5 , 5); repaint(); }public void mouseMoved(MouseEvent e) {} }

  • javaについて質問

    import javax.swing.*; import java.awt.Color; import java.awt.Graphics; import java.awt.event.*; public class tt extends JFrame { public tt(){ setTitle("hogehoge"); setBounds( 10, 10, 300, 200); JButton btn1 = new JButton("続ける"); final JPanel p = new JPanel(); p.setBackground(Color.white); btn1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ } } ); p.add(btn1); getContentPane().add(p); } public static void main(String[] args){ tt test = new tt(); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); /* 実際に表示する */ } } Graphics g; g.drawString("ほげさんじょう",130,120);を追加しても コンパイルが通りません。 どうすれば画面に文字列を表示するんですか? あとテキストフィールドを追加するさいに、座標していとかして追加できないんですか?

  • GUIを使用した電卓のボタンの表示について

    Javaの課題で電卓を制作しています。 まず見た目だけ完成させるべくボタンを配置を配置しましたが、 実行してみると正しく表示されるときと、されないときがあります(画像参照)。 現時点でのコードを掲載いたしますので、是非アドバイスをいただけると幸いです。よろしくお願いします。 ■以下コード package add; import java.awt.Button; import java.awt.Frame; import java.awt.TextField; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Calc extends Frame{ public static void main(String[] args){ Calc frame = new Calc(); } public Calc(){ super("電卓"); setSize(317,360); setVisible(true); addWindowListener(new CalcWindow()); //下記のウィンドウを閉じる用 //ボタンとフィールドの追加 TextField result = new TextField(""); result.setBounds(20,50,270,50); add(result); result.setFocusable(false); Button button1 = new Button("1"); button1.setBounds(20,120,70,30); add(button1); Button button2 = new Button("2"); button2.setBounds(100,120,70,30); add(button2); Button button3 = new Button("3"); button3.setBounds(180,120,70,30); add(button3); Button button4 = new Button("4"); button4.setBounds(20,165,70,30); add(button4); Button button5 = new Button("5"); button5.setBounds(100,165,70,30); add(button5); Button button6 = new Button("6"); button6.setBounds(180,165,70,30); add(button6); Button button7 = new Button("7"); button7.setBounds(20,210,70,30); add(button7); Button button8 = new Button("8"); button8.setBounds(100,210,70,30); add(button8); Button button9 = new Button("9"); button9.setBounds(180,210,70,30); add(button9); Button button0 = new Button("0"); button0.setBounds(100,255,70,30); add(button0); Button buttonC = new Button("C"); buttonC.setBounds(20,255,70,30); add(buttonC); Button buttonasta = new Button("."); buttonasta.setBounds(180,255,70,30); add(buttonasta); Button buttonplus = new Button("+"); buttonplus.setBounds(260,120,30,30); add(buttonplus); Button buttonminus = new Button("-"); buttonminus.setBounds(260,165,30,30); add(buttonminus); Button buttonkakeru = new Button("×"); buttonkakeru.setBounds(260,210,30,30); add(buttonkakeru); Button buttonsla = new Button("/"); buttonsla.setBounds(260,255,30,30); add(buttonsla); Button buttonE = new Button("="); buttonE.setBounds(20,300,270,30); add(buttonE); //ボタンとフィールドの追加ここまで } class CalcWindow extends WindowAdapter //ウィンドウを閉じる { public void windowClosing(WindowEvent e) { System.exit(0); } } } ※OKWAVEより補足:「Webシステム開発」についての質問です。

    • ベストアンサー
    • Java
  • jcpad

    『長方形をあらかじめ置き、、縮小、拡大のボタンを押すことで  縦横を1/1.05倍に縮小できるようにする』 という問題が教科書にあり、拡大、縮小ボタンを作るまではできたのですがそれ以降がうまく考えることができません。 //<applet code= "Counter3.class" width=300 height=150></applet> import java.awt.*; import java.applet.*; import java.awt.event.*; public class Counter3 extends Applet implements ActionListener { Font font; Button kakudaiButton, syukushoButton; public void init() { font = new Font("Serif", Font.BOLD, 72); kakudaiButton = new Button("拡大"); kakudaiButton.addActionListener(this); add(kakudaiButton); syukushoButton = new Button("縮小"); syukushoButton.addActionListener(this); add(syukushoButton); } public void paint(Graphics g) { g.drawOval(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == kakudaiButton) { ; } else if (e.getSource() == syukushoButton) { ; } repaint(); } }

  • 画面のちらつきの原因が知りたいです

    JAVAの初心者です、宜しくお願いします。 下のようなプログラムを書きました。 「public void paint(Graphics g){ ~ repaint();」とすると、画像がちらつきます、しかし、「repaint();」を消すとちらつかなくなります、この原因が分かりません。 一体何故このような現象が起こるのでしょうか、宜しくお願いします。 ========================================================== import java.applet.Applet; import java.awt.Button; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class Oval_Rec_1_071128 extends Applet implements MouseListener , ActionListener { int x1 ; int y1 ; int xh = 50 ; int yv = 50 ; Button bt1 ; Button bt2 ; public void actionPerformed(ActionEvent ae){} public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void init() { setBackground(Color.yellow); addMouseListener(this); bt1 = new Button("push"); bt1.setFont(new Font("SansSerif", Font.BOLD, 20)); bt1.setBackground(Color.black); bt1.setForeground(Color.lightGray); add(bt1); bt1.addActionListener(this); bt2 = new Button("change_circle"); add(bt2); bt2.addActionListener(this); } public void mousePressed(MouseEvent e) { x1 = e.getX(); y1 = e.getY(); xh = e.getX(); yv = e.getY(); // repaint(); //comment out } public void paint(Graphics g) { g.setColor(Color.red); g.setFont(new Font("Serif",Font.BOLD,24)); g.drawString("Hello Applet World ! !" , 50 , 50); g.setColor(Color.blue); g.drawLine( 100 , 100 , 500 , 500); g.setColor(Color.cyan); g.fillOval( x1 , y1 , xh , yv); g.setColor(Color.magenta); g.fillRect( xh , yv, x1/10 , y1/10 ); repaint(); } }

    • ベストアンサー
    • Java
  • フレームの×ボタンを押しても閉じることが出来ない

    JAVAアプレットでプログラムを作成していまして、FileInputStreamで 取り込んだデータをフレームに表示させたんですが、表示させたフレーム のボタン(ウィンドウ右上の×ボタンなど)何を押しても終了できないんです。 それで色んな所で探していて、フレームを閉じる処理が見つかったので、 それを追加してみましたが、それもだめです。 これはどのようにすればよろしいのでしょうか? 下記にソースを記述しておきますので、悪い点がございましたら教えてください。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.*; class frame extends Frame implements WindowListener { Color bgcolor; Font font; Label lab_1,lab_2; frame() { super("title"); setLayout(null); bgcolor = new Color(240,248,255); setBackground(bgcolor); setForeground(Color.black); addWindowListener(this); font = new Font("Serif",Font.PLAIN,13); /* Labelを作成 */ lab_1 = new Label(); lab_2 = new Label(); lab_1.setFont(font); lab_1.setText("TEST1"); lab_1.setBounds(20,20,60,30); add (lab_1); lab_2.setFont(font); lab_2.setText("TEST2"); lab_2.setBounds(80,20,60,30); add (lab_2); } protected void processWindowEvent(WindowEvent endEvent) { System.exit(0); } }

    • ベストアンサー
    • Java
  • Choiceから選択して文字列を取得

    Choiceで選択した項目をテキストフィールドに表示させたいのですが、文字列の取得ができないようです。 お助け下さい。よろしくお願い致します。(;_;) import java.awt.*; import java.awt.event.*; public class ChoiceTest extends Frame implements ItemListener{ TextField jt; Choice ch; Label titleLabel; String cData[]={"サッカー","バレーボール","柔道","水泳","バスケット ボール","野球"}; public static void main(String[] args){ ChoiceTest f=new ChoiceTest(); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) {System.exit(0);} }); f.setVisible(true); } ChoiceTest(){ setTitle("リストメニュー"); setSize(300,200); titleLabel=new Label("選んでください"); Choice ch=new Choice(); for(int i=0; i<cData.length; i++) { ch.addItem(cData[i]); } ch.addItemListener(this); jt=new TextField("ここに表示"); add(titleLabel,BorderLayout.NORTH); add(ch,BorderLayout.CENTER); add(jt,BorderLayout.SOUTH); } public void itemStateChanged(ItemEvent e) { if (e.getItemSelectable() == ch) { jt.setText(ch.getSelectedItem()); } } }

    • ベストアンサー
    • Java

専門家に質問してみよう