Я новичок в программировании на Java, и в первый раз я разрабатываю приложение swing в java Swing. Я хочу реализовать простой редактор, который имеет несколько кнопок, чтобы добавить простые фигуры, такие как прямоугольник, квадрат и т. Д. Проблема в том, что я не могу печатать фигуры без actionListener, но я хочу использовать кнопки для выполнения действия для меня. Я хочу напечатать или нарисовать форму всякий раз, когда я нажимал кнопку на том же фрейме, что у меня есть кнопки.Java Swing с обработкой событий
У меня есть DrawingPanel.java файл, который я получил его из Интернета, и я написал эти два других класса:
import java.awt.*;
import javax.swing.*;
public class addRect extends JPanel {
public void paintComponent(Graphics g){
super.paintComponent(g);
g.fillRect(50, 30, 200, 100);
g.setColor(Color.BLUE);
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;`
public class test {
public static void main(String[] args) {
new test();
}
public JFrame frame;
private JButton button1;
private JButton button2;
private JButton button3;
private JButton button4;
public test() {
frame = new JFrame("Paint Program");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(350, 100));
button1=new JButton("AddRectangle");
button2=new JButton("AddSquare");
button3=new JButton("AddCircle");
button4=new JButton("Clear");
frame.setVisible(true);
button1.addActionListener(new VerifyListener());
frame.setLayout(new FlowLayout());
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
}
public class VerifyListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
addRect panel=new addRect();
frame.add(panel);
panel.setVisible(true);
}
}
}
'" Проблема заключается в том, что я не могу печатать формы без ActionListener, но я хочу использовать кнопки, чтобы сделать действие для меня. «Я не вижу здесь проблемы - просто добавьте необходимые ActionListeners (или, возможно, AbstractActions) к кнопкам, которые в них нуждаются. Одна проблема с вашим кодом, вы не захотите добавлять JPanels при нажатии кнопки, а скорее иметь один чертеж JPanel, состояние которого изменяется нажатием кнопки. Пожалуйста, уточните свой вопрос/проблему. –
, когда я запускаю код, он работает без каких-либо проблем и показывает все кнопки. Но когда я нажимаю кнопку Button1 (addRectangle), он просто не рисует прямоугольник для меня. –
Это потому, что: 1) вы добавляете JPanel таким образом, что вам не следует делать - он должен быть в графическом интерфейсе с самого начала, а 2) вы не вызвали повторный аттестат и перерисовку на контейнере после добавления компонента , и 3) предпочтительный размер чертежа JPanel в настоящее время равен 0,0, и поэтому это размер, который он добавляет. –