У меня есть две панели внутри рамки. Верхняя панель управления имеет меню с тремя объектами, квадратом, кругом и треугольником. Моя рамка реализует код с верхней панели. На данный момент у меня возникают проблемы с отображением фигур на экране, когда я выбираю их из меню. Я прикрепил свою верхнюю панель управления и класс MyFrame. Спасибо за любую помощь, это очень ценится. Благодарю.Невозможно отобразить чертежи на экране при нажатии пункта меню.
Вот мой класс MyFrame.
public class MyFrame extends javax.swing.JFrame implements ActionListener, ChangeListener {
public static Shapes shape1;
private JMenuItem Square;
private JMenuItem Triangle;
private JMenuItem Circle;
private jPanelTop d1 = new jPanelTop();
public MyFrame() {
initComponents();
MyControlPanel controlPanelShapes = new MyControlPanel();
controlPanelShapes.setSize(1000, 1000);
controlPanelShapes.setLocation(0, 20);
add(controlPanelShapes);
d1.setSize(400, 400);
d1.setVisible(true);
this.add(d1);
JMenuBar jBarShape = new JMenuBar();
JMenu Shape = new JMenu();
Shape.setText("Shape");
Square = new JMenuItem();
Square.setText("Square");
Shape.add(Square);
Square.addActionListener(this);
Triangle = new JMenuItem();
Triangle.setText("Triangle");
Shape.add(Triangle);
Triangle.addActionListener(this);
Circle = new JMenuItem();
Circle.setText("Circle");
Shape.add(Circle);
Circle.addActionListener(this);
jBarShape.add(Shape);
setJMenuBar(jBarShape);
}
@Override
public void stateChanged(ChangeEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void actionPerformed (ActionEvent e) {
if (e.getSource() == Circle) {
shape1 = new Circle();
d1.setCircle();
} else if (e.getSource() == Triangle) {
shape1 = new Triangle();
} else if (e.getSource() == Square) {
shape1 = new Square();
d1.setSquare();
}
}
}
Вот мой JPanel класс:
public class jPanelTop extends javax.swing.JPanel {
public jPanelTop() {
initComponents();
}
private int xPosition = 50;
private int yPosition = 50;
private Graphics g;
public void paintComponent() {
super.paintComponent(g);
g.drawRect(xPosition, yPosition, 70, 70);
g.drawOval(xPosition, yPosition, 70, 70);
}
public void setSquare()
{
super.paintComponent(g);
g.drawRect(xPosition, yPosition, 70, 70);
repaint();
}
public void setCircle()
{
super.paintComponent(g);
g.drawOval(xPosition, yPosition, 70, 70);
repaint();
}
}
Я очень благодарен за любую помощь! :) Благодаря!
Этот вопрос относится к ** [этот другой] (http: // stackoverflow.ком/вопросы/20076884/имеющая Трудность-с-ActionListener-JSlider-jmenus-и-JLabels/20080133 # 20080133) **? Этот код мне знаком. Если вы прочитали ** [мой ответ] (http://stackoverflow.com/questions/20076884/having-difficulty-with-actionlistener-jslider-jmenus-and-jlabels/20080133#20080133) ** в конечном итоге пришли к * * [этот пример] (http://stackoverflow.com/questions/20037558/adjust-shape-dimensions-using-a-jscrollbar/20058272#20058272) **, где показана реализация 'paintComponent'. – dic19