2013-12-25 5 views
0

Я пытаюсь создать графический интерфейс с использованием Java-графики, но по какой-то причине это не сработает. Вот код:Моя графика не рисуется

public class ScreenCap extends Canvas { 

/** 
* @param args the command line arguments 
*/ 
@SuppressWarnings("ResultOfObjectAllocationIgnored") 
public static void main(String[] args) { 
    new ScreenCap(); 
} 

public ScreenCap() { 
    Window window = new Window(this); 
    window.setVisible(true); 
    this.addMouseListener(new MouseHandler()); 
    drawComponents(); 
} 

private void drawComponents() { 
    System.out.println("in draw"); 
    createBufferStrategy(3); 
    BufferStrategy bs = getBufferStrategy(); 

    Graphics g = bs.getDrawGraphics(); 

    g.setColor(Colors.BG); 
    g.fillRect(0, 0, getWidth(), getHeight()); 
} 
} 
+0

Что не работает? Это полный код? Он не компилирует –

+0

. Должно быть задано много вопросов, заданных много раз. Кому-то просто нужно будет найти правильный и закрыть этот вопрос. – Sage

+1

Почему AWT, а не Swing? См. Мой ответ на [Swing extras over AWT] (http://stackoverflow.com/a/6255978/418556) по многим причинам, чтобы отказаться от использования компонентов AWT. Если вам необходимо поддерживать более старые API на основе AWT, см. [Смешивание тяжеловесных и легких компонентов] (http://www.oracle.com/technetwork/articles/java/mixing-components-433992.html). –

ответ

2

Я бы предпочел использовать Swing вместо AWT. AWT довольно устаревший. При использовании качания, вы могли бы сделать что-то вроде кода ниже

  • Подкласса JPanel
  • Override paintComponent(Graphics g)
  • Cast для Graphics2D (опции) для более versatilitiy
  • Draw в методе paintComponent
  • Добавить экземпляр класса панели в контейнер.

Подробнее о Graphics here. Загружается с помощью учебников. Подробнее о Swing here. не

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 

public class SwingDemo extends JPanel { 
    private static final int DIM_WIDTH = 500; 
    private static final int DIM_HEIGHT = 500; 


    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2 = (Graphics2D)g; 

     g2.setColor(Color.BLUE); 
     g2.fillRect(100, 100, 200, 200); 
    } 

    public static void createAndShowGui(){ 
     JFrame frame = new JFrame(); 
     frame.add(new SwingDemo()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLocationByPlatform(true); 
     frame.pack(); 
     frame.setVisible(true); 

    } 

    public Dimension getPreferredSize(){ 
     return new Dimension(DIM_WIDTH, DIM_HEIGHT); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable(){ 
      public void run(){ 
       createAndShowGui(); 
      } 
     }); 
    } 
} 

enter image description here

Ничего захватывающего :)

+0

спасибо, что сработал – muuk

Смежные вопросы