2013-12-04 6 views
0

У меня проблемы с графическим интерфейсом на Java. Я хочу написать программу, которая попросит меня нарисовать звезду в центре экрана, но прежде чем она ее нарисует, я хочу, чтобы она спросила меня, сколько я хочу, чтобы звезды имели оружие. Этот код, который я сделал, просто рисует звезду без чего-либо еще (http://i.imgur.com/JSsfuyt.png)Как нарисовать звезду в графическом интерфейсе Java?

поэтому мне нужно его модифицировать (возможно, какой-то сканер сканирует меня на количество рук), но я не так хорош в графическом интерфейсе и Java. Вы можете мне помочь? Заранее спасибо.

import java.awt.BasicStroke; 
import java.awt.Frame; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Rectangle; 
import java.awt.geom.Path2D; 

public class App extends Frame 
{ 
    public static void main(String[] args) 
    { 
     new App(); 
    } 

    public App() 
    { 
     setSize(540, 380); 
     setVisible(true); 
    } 

    public void paint(Graphics g) 
    { 
     Graphics2D g2 = (Graphics2D) g; 
     g2.setStroke (new BasicStroke (15.0f)); 

     Rectangle r = getBounds(); 
     float width = 166; 
     float height = 166; 

     g2.translate(r.getWidth()/2 - width/2, r.getHeight()/2 - height/2); 

     Path2D star = new Path2D.Float(); 
     star.moveTo (width/5F, height-1); 
     star.lineTo (width/2F, 0); 
     star.lineTo (4*width/5F, height-1); 
     star.lineTo (0, 2*height/5F); 
     star.lineTo (width-1, 2*height/5F); 
     star.closePath(); 
     g2.draw (star); 
     g2.fill (star); 
    } 
} 

ответ

0

вам нужно прочитать о менеджеров компоновки и слушателей документов смотрите на этот код, он использует нулевой менеджер компоновки, который не рекомендуется, но отлично работает здесь. чтобы получить значение из текстового поля, вам нужно будет добавить поля в панель рисования и установить их из события insertUpdate


    package star; 

    import java.awt.*; 
    import java.awt.geom.Path2D; 
    import java.util.Random; 

    import javax.swing.*; 
    import javax.swing.event.DocumentEvent; 
    import javax.swing.event.DocumentListener; 

    public class StarApp { 
    public static void main(String[] args) { 
     new StarApp(); 
    } 
    StarFrame sf = new StarFrame(); 
    public StarApp() { 
    } 

    public class StarFrame extends JFrame implements DocumentListener { 

     StarDrawPanel drawpanel = new StarDrawPanel(); 
     StarInputPanel inputpanel = new StarInputPanel(); 

     public StarFrame() { 
      inputpanel.input.getDocument().addDocumentListener(this); 
      this.setLayout(null); 
      this.add(inputpanel); 
      this.add(drawpanel); 
      drawpanel.setSize(540, 360); 
      setSize(540, 380); 
      inputpanel.setSize(50,30); 
      setVisible(true); 
     } 
     public void insertUpdate(DocumentEvent arg0) {   
      drawpanel.repaint(); 
     } 
     public void changedUpdate(DocumentEvent arg0) { 
     } 
     public void removeUpdate(DocumentEvent arg0) { 
     } 
    } 

    public class StarDrawPanel extends JPanel { 

     Random rand = new Random(); 
     public void paint(Graphics g) 
     { 
      Graphics2D g2 = (Graphics2D) g; 
      g2.setStroke (new BasicStroke (15.0f)); 
      Rectangle r = getBounds(); 
      float width = 166; 
      float height = 166; 
      g2.translate(r.getWidth()/2 - width/2, r.getHeight()/2 - height/2); 
      Path2D star = new Path2D.Float(); 
      star.moveTo (width/5F, height-1); 
      star.lineTo (width/2F, 0); 
      star.lineTo (4*width/5F, height-1); 
      star.lineTo (0, 2*height/5F); 
      star.lineTo (width-1, 2*height/5F); 
      star.closePath(); 
      g2.draw (star); 
      float rc = rand.nextFloat(); 
      float gc = rand.nextFloat(); 
      float bc = rand.nextFloat(); 
      Color randomColor = new Color(rc, gc, bc); 
      g2.setPaint(randomColor); 
      g2.fill (star); 
     } 
    } 

    public class StarInputPanel extends JPanel { 
     public JTextField input = new JTextField(4); 
     public StarInputPanel() { 
      this.add(input); 
     } 
    } 

    } 

+0

Спасибо. Как добавить оружие в Звезду? Например, я ввожу в поле «10», а Звезда будет иметь 10 рук. Что мне нужно добавить в код? – user3065721

+0

, чтобы получить значение из текстового поля, вам нужно будет добавить поля в панель рисования и установить их из события insertUpdate – semisided1

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