Я пытаюсь нарисовать панель, которая находится в апплете.У меня есть 5 панелей, и я раскрасил фоны, чтобы я мог видеть, где они находятся.Я пытаюсь нарисовать базовые эллипсы в качестве теста, но в результате панель, кажется, сжимается, и эллипсы не появляются.
Я был бы признателен за любую помощь !!
Большое спасибо
import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class gui extends Applet{
private JFrame frame = new JFrame("Algorithm Animation");
private JPanel pnlRight = new JPanel();
private JPanel pnlLeft = new JPanel();
private JPanel pnlCenter = new JPanel();
private JPanel pnlTop = new JPanel();
private JPanel pnlBottom = new JPanel();
private JMenuBar mb = new JMenuBar();
private JMenu menuFile = new JMenu("File");
private JMenuItem menuItemQuit = new JMenuItem("Quit");
public void setMenuBar(){
frame.setJMenuBar(mb);
menuFile.add(menuItemQuit);
mb.add(menuFile);
//listener for quit button
menuItemQuit.addActionListener(new ListenMenuQuit());
}
public class ListenMenuQuit implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(-1);
}
}
public void setPanelTop() {
pnlTop.setBackground(Color.BLUE);
}
public void setPanelBottom() {
pnlBottom.setBackground(Color.BLUE);
}
public void setPanelLeft() {
pnlLeft.setBackground(Color.GREEN);
}
public void setPanelCenter() {
pnlCenter.setBackground(Color.RED);
}
public void setPanelRight() {
DrawGraph drawG = new DrawGraph();
pnlRight.add(drawG);
}
public gui() {
setMenuBar();
setPanelTop();
setPanelBottom();
setPanelLeft();
setPanelCenter();
setPanelRight();
//put panels on the frame
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(pnlTop, BorderLayout.NORTH);
frame.getContentPane().add(pnlBottom, BorderLayout.SOUTH);
frame.getContentPane().add(pnlLeft, BorderLayout.WEST);
frame.getContentPane().add(pnlCenter, BorderLayout.CENTER);
frame.getContentPane().add(pnlRight, BorderLayout.EAST);
}
private void launch(){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main (String[] args) {
JFrame.setDefaultLookAndFeelDecorated(false);
gui g = new gui();
g.launch();
}
}
и у меня также есть класс DrawGraph (который, я не думаю, работает):
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import javax.swing.JPanel;
public class DrawGraph extends JPanel {
Color c1 = Color.BLUE;
Color c2 = Color.RED;
Color c3 = Color.GREEN;
Color c4 = Color.YELLOW;
Color cl1, cl2, cl3, cl4 = Color.BLACK;
int x = 50, y = 100, w = 20, h = 20;
public DrawGraph(){
super();
this.setBackground(Color.ORANGE);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(cl1);
g2.drawLine(x+10, y+10, x+210, y+10);
g2.setColor(cl2);
g2.drawLine(x+210, y+10, x+210, y+210);
g2.setColor(cl3);
g2.drawLine(x+10, y+210, x+210, y+210);
g2.setColor(cl4);
g2.drawLine(x+10, y+10, x+10, y+210);
Ellipse2D e1 = new Ellipse2D.Double(x, y, w, h);
g2.setPaint(c1);
g2.fill(e1);
Ellipse2D e2 = new Ellipse2D.Double(x+200, y, w, h);
g2.setPaint(c2);
g2.fill(e2);
Ellipse2D e3 = new Ellipse2D.Double(x, y+200, w, h);
g2.setPaint(c3);
g2.fill(e3);
Ellipse2D e4 = new Ellipse2D.Double(x+200, y+200, w, h);
g2.setPaint(c4);
g2.fill(e4);
}
}
Любая помощь будет очень цениться.
Джош