Tworzenie plików jar

0

Witam,
Napisałem taki programik graficzny i chce go już zakończyć i mam problem z eksportem go do jar. Używam IntelliJ IDEA Community Edition 13.1.2 i nie wiem jak to zrobić przyklejałem kod do eklipsa i jak go chce eksportować to nie działa. A i jeszcze dało by się to otworzyć na na telefonie (lg l9 ii andek 4.4 kitket xD )

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;


public class RobieSam extends JFrame implements ActionListener
{
    private JLabel ldroga, lsiła, lczas, lpraca, lmoc, lwymik;
    private JTextField tdroga, tsiła, tczas, tmoc, tpraca;
    private JButton boblicz;
    private double jmoc, jpraca, jdroga, jsiła, jczas;


    public RobieSam()
    {
        setSize(400, 400);
        setLayout(null);
        setTitle("Kankulator obliczania mocy");


        ldroga = new JLabel("Podaj droge w km");
        ldroga.setBounds(20,20,150,20);
        add(ldroga);

        lsiła = new JLabel("Podaj siłe w F");
        lsiła.setBounds(20,50,150,20);
        add(lsiła);

        lczas = new JLabel("Podaj czas w h");
        lczas.setBounds(20,80,150,20);
        add(lczas);

        lpraca = new JLabel("Praca to:");
        lpraca.setBounds(20,110,150,20);
        add(lpraca);

        lmoc = new JLabel("Moc to:");
        lmoc.setBounds(20,140,150,20);
        add(lmoc);

        lwymik = new JLabel("Odpowiedz");
        lwymik.setBounds(20,200,500,20);
        add(lwymik);

        tdroga = new JTextField("");
        tdroga.setBounds(170,20,150,20);
        add(tdroga);
        tdroga.addActionListener(this);

        tsiła = new JTextField();
        tsiła.setBounds(170,50,150,20);
        add(tsiła);
        tsiła.addActionListener(this);

        tczas = new JTextField();
        tczas.setBounds(170,80,150,20);
        add(tczas);
        tczas.addActionListener(this);

        tpraca = new JTextField("0");
        tpraca.setBounds(170,110,150,20);
        add(tpraca);
        tpraca.addActionListener(this);

        tmoc = new JTextField("0");
        tmoc.setBounds(170,140,150,20);
        add(tmoc);
        tmoc.addActionListener(this);

        boblicz = new JButton("Oblicz Prace i Moc");
        boblicz.setBounds(170,170,150,20);
        add(boblicz);
        boblicz.addActionListener(this);
    }








    public void actionPerformed(ActionEvent e)
    {
        Object z = e.getSource();
        if (z == boblicz)
        {
            jpraca = Double.parseDouble(tpraca.getText());
            jczas = Double.parseDouble(tczas.getText());
            jsiła = Double.parseDouble(tsiła.getText());
            jdroga = Double.parseDouble(tdroga.getText());
            jmoc = (jsiła * jdroga) / jczas;
            tmoc.setText(String.valueOf(jmoc + " Wat"));
            jpraca = jsiła * jdroga;
            tpraca.setText(String.valueOf(jpraca + " Dżul"));
            lwymik.setText(("Odpowiedz. Z " + jsiła + "F i " + jdroga + "km  praca wynosi "
                    +  jpraca + "J, natomiast moc z" + jczas + "h i " +jpraca + "J wynosi " + jmoc + "W."));


        }



    }



    public static void main(String[] args)
    {
        RobieSam apka = new RobieSam();
        apka.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        apka.setVisible(true);
    }
}
 
0

Jeśli korzystasz z Mavena przy projekcie to wystarczy dodać do pom.xml:

<!-- jar file building -->
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass>RobieSam</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>

Potem: Maven --> Plugins --> assembly --> assembly:assembly i dajesz na tym install.
Jeśli nie korzystałeś z Mavena lub masz z tym problem to daj znać.

0

A i jeszcze dało by się to otworzyć na na telefonie (lg l9 ii andek 4.4 kitket xD )

Absolutnie nie. Java androidowa to nie to samo co Java SE, w szczególności Android nie ma wsparcia dla swinga ;]

0

Tu masz filmik jak utworzyć jara za pomocą Maven'a. Wygenerowany plik wykonywalny .jar znajduje się w folderze target.

0

Za ch*j nie działa masz tu ss https://www.dropbox.com/sh/94rv2h58enp0nnf/CCGvwIJ1--
oraz mam taką prośbę jakbyś mógł zrobić mi ten plik jar bo na jutro mi jest potrzebny a raczej tego dzisiaj nie rozkminie.

0

Nigdy w życiu nie korzystałem z Mavena, a mimo to zrozumiałem (czego o Tobie nie można powiedzieć), że ten fragment XML masz wstawić do pliku pom.xml, a nie tworzyć nowy.

0

Zrobiłem z kodu źródłowego (zamieściłeś go trzy posty wcześniej).
Pobierz załącznik i zmień mu nazwę na RobieSam.jar. Forum nie akceptuje załączników z rozszerzeniem jar.
Na przyszłość, do stworzenia jara nie jest potrzebny Eclipse, IDEA ani Maven. Otwierasz konsolę, przechodzisz do folderu z plikiem class i wpisujesz polecenie jar -cfe RobieSam.jar RobieSam RobieSam.class. Ewentualnie wpisujesz samo jar i czytasz instrukcję.

0

Jak zbudować plik wykonwyalny Jar za pomocą IDEI oraz Maven'a zamieściłem pod:

Plik wykonywalny JAR masz pod linkiem:

http://www2.zippyshare.com/v/98808499/file.html

Przebudowany kod:

import javax.swing.*;

public class Ramka extends JFrame {

    public static final int WIDTH = 350;
    public static final int HEIGHT = 280;

    public Ramka() {
        setUpFrame();
        initializeComponents();
    }

    private void setUpFrame() {
        setSize(WIDTH, HEIGHT);
        setTitle("Kankulator obliczania mocy");
        setLocationRelativeTo(null);
        setResizable(false);
    }

    private void initializeComponents() {
        Panel panel = new Panel();
        add(panel);
    }
}

// *******************************************************************

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Panel extends JPanel {
    private JTextField drogaTF;
    private JTextField silaTF;
    private JTextField czasTF;

    private JLabel pracaTF;
    private JLabel mocTF;

    public Panel() {
        setUpPanel();
        initializeComponents();
    }

    private void setUpPanel() {
        setLayout(new GridLayout(6, 2, 10, 10));
        setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
    }

    private void initializeComponents() {
        add(new JLabel("Podaj droge w km"));
        drogaTF = new JTextField();
        add(drogaTF);

        add(new JLabel("Podaj siłe w F"));
        silaTF = new JTextField();
        add(silaTF);

        add(new JLabel("Podaj czas w h"));
        czasTF = new JTextField();
        add(czasTF);

        add(new JLabel("Praca to:"));
        pracaTF = new JLabel("0");
        add(pracaTF);

        add(new JLabel("Moc to:"));
        mocTF = new JLabel("0");
        add(mocTF);

        add(new JLabel());

        JButton oblicz = new JButton("Oblicz");
        oblicz.addActionListener(new SluchaczPrzyciskuOblicz());
        add(oblicz);
    }

    class SluchaczPrzyciskuOblicz implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            try {
                double jczas = Double.parseDouble(czasTF.getText());
                double jsiła = Double.parseDouble(silaTF.getText());
                double jdroga = Double.parseDouble(drogaTF.getText());
                double jmoc = (jsiła * jdroga) / jczas;
                double jpraca = jsiła * jdroga;

                mocTF.setText(String.valueOf(jmoc + " Wat"));
                pracaTF.setText(String.valueOf(jpraca + " Dżul"));

                JOptionPane.showMessageDialog(null,
                        String.format("Odpowiedz. Z %.2fF i %.2fkm  praca wynosi %.2fJ," +
                                      "natomiast moc z %.2fh i %.2fJ wynosi %.2fW.",
                                jsiła, jdroga, jpraca, jczas, jpraca, jmoc));

            } catch (NumberFormatException e1) {
                JOptionPane.showMessageDialog(null, "Podano błędne dane");
            }


        }
    }
}

// *******************************************************************

import javax.swing.*;
import java.awt.*;


public class Runner {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                Ramka ramka = new Ramka();
                ramka.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                ramka.setVisible(true);
            }
        });
    }
}
0

Mniej więcej rozumiem ten kod, ale nie wiem jak rozmieściłeś elementy w ramce i co to znaczy

setLayout(new GridLayout(6, 2, 10, 10));
setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

dodanie znacznika <code class="java"> - furious programming

0

Skorzystałem z layout'u GridLayout, aby wszystkie komponenty na panelu (etykiety oraz pola tekstowe) były rysowane w postaci siatki 6 x 2 (sześć wierszy, dwie kolumny). Pozostałe dwa parametry czyli 10, 10 to odstępy w poziomie oraz w pionie między komponentami znajdującymi się w panelu.

Poczytaj o Grid Layout:
http://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html

setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)) --> tworzy puste obramowanie wokół panelu, dzięki czemu komponenty nie przylegają do krawędzi i uzyskujemy odstęp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1