2013-03-03 3 views
1

My programJava-AWT-апплеты. Как изменить размер фигуры в моей программе?

Эта программа предназначена для того, чтобы принять форму, определенную пользователем, и изменить ее размер на основе ввода.

У меня есть две проблемы. Первый заключается в том, что пользователю придется вводить его в виде строки, но значение размера является целым числом. Если я конвертирую целое число в строку, это даст мне null-исключение при преобразовании. (исключение java.lang.Integer.parseInt (Неизвестный источник)).)

Другая проблема заключается в том, что я не знаю, что добавить в метод actionPerfomed. Поскольку вся информация должна идти только к методу краски. Как передать целочисленное значение в метод Paint.

import java.io.*; 
import java.util.*; 
import java.text.*; 

import java.awt.*; 
import java.awt.event.*; 
import java.applet.*; 
import java.applet.Applet; 


public class ChangeSize extends Applet 
    implements ActionListener 
{ 
    Button bttn1 = new Button ("Circle"); 
    Button bttn2 = new Button ("Square"); 
    Button bttn3 = new Button ("Triangle"); 
    Button bttn4 = new Button ("Rectangle"); 

    Label lab1; // text within applet 
    TextField t1; // where user inputs text 
    String input; 

    int choice; 

    public void init() 
    { 
     this.setSize (500, 300); 

     setBackground (Color.lightGray); 

     lab1 = new Label ("Insert the size of the shape:"); 
     //int Size = Integer.parseInt (input); 
     add (lab1); 
     t1 = new TextField(); 
     add (t1); 

     bttn1.addActionListener (this); // circle button 
     bttn2.addActionListener (this); // square button 
     bttn3.addActionListener (this); // triangle button 
     bttn4.addActionListener (this); // rectangle button 

     add (bttn1); 
     add (bttn2); 
     add (bttn3); 
     add (bttn4); 

    } 
    public void paint (Graphics g) 
    { 
     int xpoints[] = {25, 145, 25, 145, 25}; \ 
     int ypoints[] = {25, 25, 145, 145, 25}; 
     int npoints = 5; 

     switch (choice) 
     { 
      case 1: 
       if (choice == 1) 
        g.setColor (Color.red); 
       g.fillOval (30, 40, 20, 20); // I want it to be (30,40, 20, size). Instead 


      case 2: 
       if (choice == 2) 
        g.fillRect (20, 40, 100, 100); 
      case 3: 
       if (choice == 3) 
        g.fillPolygon (xpoints, ypoints, npoints); 
      case 4: 
       if (choice == 4) 
        g.fillRect (20, 40, 50, 100); 

       break; 
     } 

     showStatus ("Please seclect an option."); 
    } 
    public void actionPerformed (ActionEvent evt) 
    { 
     if (evt.getSource() == bttn1) 
      choice = 1; 
     else if (evt.getSource() == bttn2) 
      choice = 2; 
     else if (evt.getSource() == bttn3) 
      choice = 3; 
     else if (evt.getSource() == bttn4) 
      choice = 4; 

      Size = t1.getText(); 

      // I dont know what to put here 

     repaint(); 
    } 

} 
+0

Почему AWT в 2013 году? Swing - это инструментарий GUI для использования в (начале) третьего тысячелетия. 'this.setSize (500, 300);' Не делайте этого в апплете (будь то 'Applet' *** или ***' JApplet'), размер установлен в HTML (возможно, написан JavaScript). –

ответ

2

Вы близки к решению и ваш комментарий, // I want it to be (30,40, 20, size). Instead держит ключ.

  • Дайте вашему приложению поле класса int или поля, чтобы сохранить размер рисунка.
  • используйте этот размер, чтобы установить размер фигуры в вашей рутине.
  • Разрешите пользователю изменять размеры в методе actionPerformed.
  • Текст, который вы получите, будет String, и вам нужно будет разобрать его в int, прежде чем вы сможете использовать его с помощью метода Integer.parseInt(...).

Относительно:

У меня есть два вопроса. Первый заключается в том, что пользователю придется вводить его в виде строки, но значение размера является целым числом. Если я конвертирую целое число в строку, это даст мне null-исключение при преобразовании. (исключение java.lang.Integer.parseInt (Неизвестный источник)).)

Проблема заключается в том, где вы пытаетесь разобрать int. Вы делаете это в методе init, который является методом, который создает и создает апплет, который является способом, прежде чем пользователь успеет добавить ввод в текстовое поле. Было бы гораздо лучше проанализировать метод actionPerformed.

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