• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java - problem z JScrollPane

Object Storage Arubacloud
0 głosów
168 wizyt
pytanie zadane 27 maja 2018 w Java przez Paweł Celuch Początkujący (420 p.)
package com.company;
import java.awt.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;
import java.awt.geom.Path2D;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.Buffer;
import java.util.TreeSet;
import javax.swing.Timer;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

import static java.lang.Math.cos;
import static java.lang.Math.sin;
import static sun.misc.PostVMInitHook.run;


public class Main {

    public static void main(String[] args) {
        Gui app = new Gui();
        app.buildGui();
    }
}

class Gui extends JPanel implements ActionListener {
    JFrame window = new JFrame();
//    Gui z = new Gui();
    JButton exitButton = new JButton();
    JButton pushButton = new JButton();



    JLabel weightN = new JLabel("Masa");
    JLabel speedN = new JLabel("Szybkosc");
    JLabel countN = new JLabel("Kat");
    static public JTextField weight = new JTextField(5);
    static public JTextField speed = new JTextField(5);
    static public JTextField count = new JTextField(5);




    public void buildGui() {
        window = new JFrame();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(600, 100);
        window.setTitle("Algortym łucznika");



        exitButton = new JButton("Koniec");
        pushButton = new JButton("Strzel");

        pushButton.addActionListener(this);
        exitButton.addActionListener(this);
        FlowLayout cp = new FlowLayout(FlowLayout.LEFT);

        window.setLayout(cp);
        window.getContentPane().add(pushButton);
        window.getContentPane().add(weightN);
        window.getContentPane().add(weight);
        window.getContentPane().add(speedN);
        window.getContentPane().add(speed);
        window.getContentPane().add(countN);
        window.getContentPane().add(count);



        window.getContentPane().add(exitButton);


        window.setVisible(true);
    }

    static public JTextField x = new JTextField(10);
    public void buildGui2() {

        window = new JFrame();
        JPanel anel = new JPanel();

        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(1300, 800);
        window.setTitle("Algortym łucznika");
                anel.add(new GuiShow());
        JScrollPane pa = new JScrollPane(anel,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);



        window.getContentPane().add(pa);
       



        window.setVisible(true);

    }

    public void buildGui3() {

        window = new JFrame();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(400, 100);
        window.setTitle("Algortym łucznika");
        FlowLayout cp = new FlowLayout(FlowLayout.LEFT);

        window.setLayout(cp);
        GuiShow guiNew = new GuiShow();
        double ex = guiNew.sim();
        String ex2 = String.valueOf(ex);
        JLabel y = new JLabel("Czas");
        JTextField x = new JTextField(ex2);
        window.getContentPane().add(y);
        window.getContentPane().add(x);

        window.setVisible(true);

    }



    public String getWeightDigitID(){
        return weight.getText();
    }


    public String getSpeedDigitID(){
        return  speed.getText();
    }

    public String getCountDigitID(){
        return count.getText();
    }



    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if (source == exitButton) {
            System.exit(0);
        }
        if (source == pushButton) {
            getWeightDigitID();
            getSpeedDigitID();
            getCountDigitID();

            buildGui2();



        }


    }
}
 class GuiShow extends JPanel implements Runnable {


    private Thread runner = null;
    double x = 0;
    double y = 0;
    double startX = x;
    double startY = y;
    double endX=10, endY=550;
    double R = 3.1415926 / 180.0;
    double vx, vy, t = 0.0;
    double dt = 0.003;
    double eps = 0.01;
    double c = 0.7;
    double g = 9.81;
    double m;
    double angle=50;
//
//    public GuiShow(){
//        JPanel gamePanel = new JPanel();
//        gamePanel.setBackground(Color.green);
//        gamePanel.setPreferredSize(new Dimension(500,300));
//
//        JPanel infoPanel = new JPanel();
//        infoPanel.setBackground(Color.WHITE);
//
//        infoPanel.setLayout(new BoxLayout(infoPanel, BoxLayout.Y_AXIS));
//        infoPanel.setPreferredSize(new Dimension(100, 400));
//
//        add(gamePanel, BorderLayout.CENTER);
//
//
//    }

    @Override
    public void paintComponent(final Graphics p) {

        super.paintComponent(p);
        Graphics2D g2d = (Graphics2D) p;

        vx= alfaVX(speed(),count());
        vy= alfaVY(speed(),count());
        m = weight();

        double r = c / m;

        int n = 0;

        Thread ten=Thread.currentThread();
        while (y > -eps) {


            System.out.println(x + " " + y + " " + t);
            vx = vx - r * vx * dt;
            vy = vy - g * dt - r * vy * dt;
            x = x + vx * dt - 0.5 * r * vx * dt * dt;
            y = y + vy * dt - 0.5 * g * dt * dt + 0.5 * r * vy * dt * dt;
            double tmp = y;
            y=-y;


            t = t + dt;
            n = n + 1;

            g2d.drawOval((int)x+5,(int)y+650,3,3);


            y=tmp;
        }
        runner=null;






    }


    double speed(){
        Gui s = new Gui();
        String x = s.getSpeedDigitID();

        double v=Double.parseDouble(s.getSpeedDigitID());

        return v;
    }

    double weight(){
        Gui s = new Gui();
        String x = s.getWeightDigitID();

        double v=Double.parseDouble(s.getWeightDigitID());

        return v;
    }


    double count(){
        Gui s = new Gui();
        String x = s.getCountDigitID();

        double v=Double.parseDouble(s.getCountDigitID());

        return v;
    }

    double alfaVX(double v, double alfa) {

        double co = cos(R * alfa);

        vx = v * co;


        return vx;
    }

    double alfaVY(double v, double alfa) {

        double si = sin(R * alfa);

        vy = v * si;

        return vy;
    }


//    public void draw(){
//        if (runner==null)
//        {
//            runner=new Thread(this);
//            runner.start();
//        }
//    }

    public void run(){

    }


    public double sim(){

        vx= alfaVX(speed(),count());
        vy= alfaVY(speed(),count());
        m = weight();

        double r = c / m;

        int n = 0;


        while (y > -eps) {



            vx = vx - r * vx * dt;
            vy = vy - g * dt - r * vy * dt;
            x = x + vx * dt - 0.5 * r * vx * dt * dt;
            y = y + vy * dt - 0.5 * g * dt * dt + 0.5 * r * vy * dt * dt;


            t = t + dt;
            n = n + 1;

        }
        return t;
    }
}




Witam. Mam problem z JScrollPane. Kiedy pokaże się już obiekt, który narysowałem to nie mogę użyć suwaków by przejść dalej go zobaczyć. Dlaczego tak sie dzieje? Jest jakieś rozwiązanie tego problemu?

komentarz 27 maja 2018 przez mbabane Szeryf (79,280 p.)
edycja 27 maja 2018 przez mbabane
komentarz 27 maja 2018 przez Paweł Celuch Początkujący (420 p.)
Zadziałało, a mam pytanie jeszcze. Czy jest metoda jakaś na rysowanie za ramką? By wszystko się narysowała także na niewidocznej cześci?
komentarz 28 maja 2018 przez mbabane Szeryf (79,280 p.)
Chyba niezbyt rozumiem co masz na myśli możesz pokazać jakiś przykład albo jakoś inaczej opisać?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 182 wizyt
pytanie zadane 12 września 2018 w Java przez Stalowy69 Użytkownik (510 p.)
0 głosów
1 odpowiedź 150 wizyt
pytanie zadane 9 czerwca 2018 w Java przez Piotrek32 Obywatel (1,610 p.)
0 głosów
1 odpowiedź 400 wizyt
pytanie zadane 23 maja 2021 w Java przez Beginner555 Obywatel (1,760 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...