Новичок
Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.10.2011
Репутация: нет Всего: нет
|
В общем и целом, есть две кнопки, при нажатии должно перерисовываться, а в идеале появляться полоса прокрутки. Но перерисовывается только при изменении размера, в вебе такое не сработает, так что незнаю что придумать. Подскажите пожалуйста, где ошибка. Вот весь код т.к не знаю что нужно, что нет. это мейн Код | import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.Applet;
import java.awt.Container; import java.awt.Font; import java.awt.TextArea; import java.util.ArrayList; import java.util.List; import java.util.Random;
import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane;
public class NewJApplet extends Applet { TextArea text_area; int start = 0; int stop = 0; int click = 0; int keytyped = 0; PaintGraph pg,pg1=null; StringBuffer buffer; Font font = new Font("Verdana", Font.PLAIN, 25); private static List<PaintGraph> graphs = new ArrayList<PaintGraph>(); public void init() { setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
//понель кнопок JPanel butPan=new JPanel(); butPan.setLayout(new BoxLayout(butPan, BoxLayout.X_AXIS)); JButton addButton = new JButton("+"); addButton.setFont(font); addButton.setFocusable(false); butPan.add(addButton); JButton remButton = new JButton("-"); remButton.setFont(font); remButton.setFocusable(false); butPan.add(remButton); add(butPan); // понель графиков final JPanel graphPanel = new JPanel(); final JScrollPane scrollPane = new JScrollPane(graphPanel); graphPanel.setLayout(new BoxLayout(graphPanel, BoxLayout.Y_AXIS)); add(graphPanel); // кнопки addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { PaintGraph pg=new PaintGraph(getArray(600),0); graphs.add(pg); graphPanel.add(pg); //repaint(); scrollPane.revalidate(); } }); remButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(graphs.size() > 0) { int index = graphs.size() - 1; PaintGraph pg = graphs.remove(index); graphPanel.remove(pg); repaint(); scrollPane.revalidate(); } } }); } public int[] getArray(int kol){ Random random = new Random(); int[] array = new int[kol]; for (int i=0;i<kol;i++){ array[i]=100-Math.abs(random.nextInt(100)); } return array; } }
|
сам PaintGraph Код | import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random;
import javax.swing.*;
public class PaintGraph extends JPanel { /** * */ private static final long serialVersionUID = 6090550533945953271L; private int[] array; private int shy;
public PaintGraph(int[] array,int shy) { setArray(array); setShy(shy); /* * ny = 10;// цена деления по шкалам * ky = (float)1.0; // коэф шкалы по у * kx = (float)0.0; // коэф шкалы по x * oyn = 50; // начальный отступ по y * oxn = 50 ; //начальный отступ по х * ly = 100; // длина оси у * lx = 600; // длина оси х * sh=0;//сещение граффика */ }
public void paint(Graphics g) { super.paint(g); drawGr(g, 10,(float)1.0, 0, shy, 50, 100, 600,array); }
// Метод рисующий массив void drawGr(Graphics g,int ny, float ky, float kx, int oyn, int oxn, int ly, int lx, int[] arr){ //Разбиваем каждую ось на две части для удобства переноса центра координат // Ось Y g.drawLine( (int)(lx*kx+oxn),oyn, (int)(lx*kx+oxn),ly+oyn); // Стрелки g.drawLine((int)(lx*kx+oxn),oyn, (int)(lx*kx+oxn)-3,oyn+10); g.drawLine((int)(lx*kx+oxn),oyn, (int)(lx*kx+oxn)+3,oyn+10); // Надпись g.drawString("Y",(int)(lx*kx+oxn)-10,oyn+10); g.drawString("0",(int)(lx*kx+oxn)-10,(int)(ly*ky+oyn)+10); //Деления int l1 = (int)(ly*ky); int l2 = ly - l1; int k1 = (int)l1/ny; int k2 = (int)l2/ny; for (int i=1;i<k1+1;i++) { g.drawLine((int)(lx*kx-2+oxn),l1-ny+oyn, (int)(lx*kx+2+oxn),l1-ny+oyn); l1=l1-ny; } l1=ly-l2; for(int i=1;i<k2+1;i++) { g.drawLine((int)(lx*kx-2+oxn),l1+ny+oyn, (int)(lx*kx+2+oxn),l1+ny+oyn); l1=l1+ny; } // Ось Х g.drawLine(oxn,(int)(ly*ky+oyn),lx+oxn,(int)(ly*ky+oyn)); g.drawLine(lx+oxn,(int)(ly*ky+oyn),lx+oxn-10, (int)(ly*ky+oyn)-3); g.drawLine(lx+oxn,(int)(ly*ky+oyn),lx+oxn-10, (int)(ly*ky+oyn)+3); // Надпись g.drawString("Х",lx+40,(int)(ly*ky+oyn)-10); // Деления l1 = (int)(lx*kx); l2 = lx - l1; k1 = (int)l1/ny; k2 = (int)l2/ny; for (int i=1;i<k1+1;i++) { g.drawLine(l1-ny+oxn,(int)(ly*ky-2+oyn), l1-ny+oxn,(int)(ly*ky+2+oyn)); l1=l1-ny; } l1=lx-l2; for(int i=1;i<k2+1;i++) { g.drawLine(l1+ny+oxn,(int)(ly*ky-2+oyn), l1+ny+oxn,(int)(ly*ky+2+oyn)); l1=l1+ny; } // Выбор метода для рисования функции int x1=oxn,y1=ly+oyn,y2; for (;x1<lx;){ y2=arr[x1-50]+oyn; x1++; g.drawLine(x1,y1,x1+1,y2); y1=y2; } } public int getShy() { return shy; }
public void setShy(int shy) { this.shy = shy; }
public int[] getArray() { return array; }
public void setArray(int[] array) { this.array = array; } }
|
repaint() в коментариях, так как и без него должно работать, но пробовал и с ним - ничего Это сообщение отредактировал(а) Kremlin - 23.11.2011, 22:21
|