2015-06-15 1 views
0

Я новичок в java и хотел бы вызвать графический метод в ActionEvent, скажем, я хотел бы, чтобы квадрат был нарисован при нажатии кнопки b? Буду признателен за любую помощь спасибо:как вызвать графический метод в actionperformed?

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

public class Cours2_2 extends Applet implements ActionListener { 



Button a,b,c; 


public void init(){ 

     setBackground(Color.pink); 

     a= new Button("KIRMIZI"); 
     a.addActionListener(this); 
     add(a); 

     b= new Button("BEYAZ"); 
     b.addActionListener(this); 
     add(b); 

     c= new Button("SARI"); 
     c.addActionListener(this); 
     add(c); 
    } 
public void paint(Graphics g){ 
    g.drawString("s", 5, 5); 
} 



    public void actionPerformed(ActionEvent e){ 
    String s= e.getActionCommand(); 
    if(s.equals("KIRMIZI")){ 
     setBackground(Color.red); 
    } 
    if(s.equals("BEYAZ")){ 
     setBackground(Color.white); 
    } 
    if(s.equals("SARI")){ 
     setBackground(Color.yellow); 
     } 
    drawStrings(t); 
    } 
public void drawStrings(Graphics t) { 
    t.setColor(Color.yellow); 
    t.fillRect(0, 0, 75 ,75); 
} 


} 

Я хотел бы знать, если я должен создать этот квадрат, который я хочу рисоваться при нажатии кнопки в качестве метода или функции. Thanks

ответ

3
  1. Избегайте Applet, если вы «действительно» должны, используйте вместо этого JApplet. Сказав это, вы должны начать с JPanel и переопределить это paintComponent метод вместо этого (и убедитесь, что вы звоните super.paintComponent, прежде чем делать какие-либо пользовательские картины. Посмотрите на Painting in AWT and Swing и Performing Custom Painting для получения более подробной информации.
  2. Вообще говоря, картина в AWT/Swing является пассивным, то есть когда система «решает» что-то нуждается в обновлении, она будет окрашена. Это означает, что вы (как правило) мало контролируете, когда что-то будет нарисовано. Вы делаете предложения, но это обновление для система, чтобы решить, что и когда что-то нарисовано.
  3. Методы paint должны отображать текущее состояние компонента. Это означает, что вам нужно будет предоставить некоторую информацию и логику, которые могут использовать методы рисования принимать решения о том, что рисовать. Например, у вас может быть флаг, который изменяется на ActionListener, который вызывает repaint на вашем компоненте, и когда компонент окрашивается, вы должны проверить состояние этого флага и принять решение о том, что должно быть сделано (например, рисование квадрата например).

Более сложный подход может использовать List и воспользоваться Shape API, добавление или удаление фигур в List которых метод краска будет затем иметь возможность перебрать и краски

Посмотрите Collections Trail и 2D Graphics для получения более подробной информации

+0

Большое спасибо! Я действительно ценю твою помощь. Дело в том, что я студент-бакалавр по вычислительной технике, и профессор выбрал метод апплета вместо использования приложения. Основная проблема для меня в этом коде - это то, что я должен делать с помощью функции drawStrings (t): 'Я использую в конце и как я могу ее вызывать в действии, еще раз спасибо –

+0

Избавьтесь от' drawString', переместите его функциональность для 'paint'. Вызов 'repaint' в конце вашего метода actionPerformed – MadProgrammer

+1

*« .. профессор выбрал метод апплета вместо использования приложения ». * 1) Задайте * профессору *, чтобы сделать простой апплет и поместить его на сайт Uni для студентов, чтобы посетить. Бьюсь об заклад, он не будет так увлечен им. 2) Пожалуйста, * также * отсылайте их к [Почему учителя CS должны ** останавливаться ** преподавать Java-апплеты] (http://programmers.blogoverflow.com/201/2013/why-cs-teachers-should-stop-teaching- Java-апплеты /). –