Applet ładujący obrazek

0

Witam. Mam problem bo jestem bardzo początkujący jeśli chodzi o robienie appletów w javie. Applet robie w Eclipsie a korzystam bodajze z Visual Editora który jest tam dostępny i umożliwia takie bardziej graficzne stworzenie programu bądź też appletu.... No więc w czym polega problem. Jeśli to możliwe to prosiłbym o porade jak na moim przykładzie zrobić tak żeby po naciśnęciu w przycisk (niech będzie o nazwie JButton) wyświetlił sie obrazek w Panelu (u mnie nazywa się on PanelWczytajObrazek). Kod programu jest taki jak pod spodem i wyróżniłem (pogrubiłem) wam kod który opisuje wyżej wymienione komponenty...

... bo kurde nie mam pojęcia gdzie wpisać i w jakiej formie wpisać kod który spowoduje że gdy klikniemy przycisk to sie zrobi coś tam... w Delphi kliknęło się w przycisk i wiadomo było gdzie wpisać jakieś funkcje czy cuś takiego, które spowoduje zdarzenie po naciśnieciu przycisku i było to dla mnie jakoś jaśniejsze a tutaj (w Javie) normalnie dla mnie czarna magia:| A ogólnie to mam zrobić applet który wyświetli w JPanelu jakieś punkty których współrzędne są zapisane w pliku tekstowym w formie że np współrzędna X jest w pierwszym wierszu, współrzędna Y w drugim, w 3cim wierszu nazwa miasta, w 4rtym znowu X itd itd... i jeśli ktoś też w tym mogłbym nie jakoś ukierunkować to bardzo z góry dziękuje:))

A to kod Appletu który został wygenerowany przez Eclipse po umieszczeniu już wszystkich przycisków w ContentPane():

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JApplet;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.Rectangle;
import javax.swing.JSplitPane;
import javax.swing.BorderFactory;
import javax.swing.border.TitledBorder;
import java.awt.Font;
import java.awt.Color;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import java.awt.Point;
import java.awt.Dimension;
import javax.swing.JRadioButton;
import javax.swing.JList;
import javax.swing.JToggleButton;
import javax.swing.JTree;
import javax.swing.JSlider;

public class Misza extends JApplet {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel PanelApplet = null;
private JPanel PanelOpcje = null;
private JPanel PanelMapka = null;
private JPanel PanelPliki = null;
private JLabel jLabel = null;
private JComboBox jComboBox = null;
private JButton jButton = null;
private JPanel PanelNawigacja = null;
private JPanel PanelWczytajMapke = null;
private JButton jButton1 = null;
private JButton jButton2 = null;
private JButton jButton3 = null;
private JButton jButton4 = null;
private JButton jButton5 = null;
private JButton jButton6 = null;

public Misza() {
	super();
}
public void init() {
	this.setSize(820, 520);
	this.setContentPane(getJContentPane());
}
private JPanel getJContentPane() {
	if (jContentPane == null) {
		jContentPane = new JPanel();
		jContentPane.setLayout(new BorderLayout());
		jContentPane.add(getPanelApplet(), BorderLayout.CENTER);
	}
	return jContentPane;
}
private JPanel getPanelApplet() {
	if (PanelApplet == null) {
		PanelApplet = new JPanel();
		PanelApplet.setLayout(null);
		PanelApplet.setBorder(BorderFactory.createLineBorder(Color.gray, 3));
		PanelApplet.setBackground(new Color(238, 238, 238));
		PanelApplet.add(getPanelOpcje(), null);
		PanelApplet.add(getPanelMapka(), null);
	}
	return PanelApplet;
}
private JPanel getPanelOpcje() {
	if (PanelOpcje == null) {
		PanelOpcje = new JPanel();
		PanelOpcje.setLayout(null);
		PanelOpcje.setBounds(new Rectangle(11, 6, 139, 508));
		PanelOpcje.setBorder(BorderFactory.createTitledBorder(null, "Opcje i ustawienia",    TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new Color(51, 51, 51)));
		PanelOpcje.setBackground(new Color(255, 255, 204));
		PanelOpcje.add(getPanelPliki(), null);
		PanelOpcje.add(getPanelNawigacja(), null);
	}
	return PanelOpcje;
}	
     private JPanel getPanelMapka() {
	if (PanelMapka == null) {
		PanelMapka = new JPanel();
		PanelMapka.setLayout(null);
		PanelMapka.setBounds(new Rectangle(155, 6, 659, 508));
		PanelMapka.setBorder(BorderFactory.createTitledBorder(null, "Mapka", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new Color(51, 51, 51)));
		PanelMapka.setBackground(new Color(255, 255, 204));
		PanelMapka.add(getPanelWczytajMapke(), null);
	}
	return PanelMapka;
}
private JPanel getPanelPliki() {
	if (PanelPliki == null) {
		jLabel = new JLabel();
		jLabel.setBounds(new Rectangle(8, 4, 106, 20));
		jLabel.setText("   Wybierz mapke");
		PanelPliki = new JPanel();
		PanelPliki.setLayout(null);
		PanelPliki.setBounds(new Rectangle(8, 20, 121, 78));
		PanelPliki.setBorder(BorderFactory.createLineBorder(Color.black, 1));
		PanelPliki.add(jLabel, null);
		PanelPliki.add(getJComboBox(), null);
		PanelPliki.add(getJButton(), null);
	}
	return PanelPliki;
}
private JComboBox getJComboBox() {
	if (jComboBox == null) {
		jComboBox = new JComboBox();
		jComboBox.addItem("");
		jComboBox.addItem("Polska");
		jComboBox.addItem("Europa");
		jComboBox.addItem("Świat");
		jComboBox.setBounds(new Rectangle(8, 28, 106, 20));
		
	}
	return jComboBox;
}

private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setLocation(new Point(8, 52));
jButton.setText("OK");
jButton.setSize(new Dimension(106, 20));
}
return jButton;
}

private JPanel getPanelNawigacja() {
if (PanelNawigacja == null) {
PanelNawigacja = new JPanel();
PanelNawigacja.setLayout(null);
PanelNawigacja.setBounds(new Rectangle(8, 107, 121, 312));
PanelNawigacja.setBorder(BorderFactory.createTitledBorder(null, "Nawigator", TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.BOLD, 12), new Color(51, 51, 51)));
PanelNawigacja.add(getJButton1(), null);
PanelNawigacja.add(getJButton2(), null);
PanelNawigacja.add(getJButton3(), null);
PanelNawigacja.add(getJButton4(), null);
PanelNawigacja.add(getJButton5(), null);
PanelNawigacja.add(getJButton6(), null);
}
return PanelNawigacja;
}
private JPanel getPanelWczytajMapke() {
if (PanelWczytajMapke == null) {
PanelWczytajMapke = new JPanel();
PanelWczytajMapke.setLayout(null);
PanelWczytajMapke.setLocation(new Point(10, 16));
PanelWczytajMapke.setBorder(BorderFactory.createLineBorder(Color.black, 1));
PanelWczytajMapke.setSize(new Dimension(640, 480));
}
return PanelWczytajMapke;
}

private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setLocation(new Point(10, 18));
jButton1.setText("Powiększ +");
jButton1.setSize(new Dimension(100, 20));
}
return jButton1;
}
private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton();
jButton2.setLocation(new Point(10, 42));
jButton2.setText("Pomniejsz -");
jButton2.setSize(new Dimension(100, 20));
}
return jButton2;
}
private JButton getJButton3() {
if (jButton3 == null) {
jButton3 = new JButton();
jButton3.setLocation(new Point(10, 84));
jButton3.setText("Prawo -->");
jButton3.setSize(new Dimension(100, 20));
}
return jButton3;
}
private JButton getJButton4() {
if (jButton4 == null) {
jButton4 = new JButton();
jButton4.setLocation(new Point(10, 109));
jButton4.setText("<-- Lewo");
jButton4.setSize(new Dimension(100, 20));
}
return jButton4;
}
private JButton getJButton5() {
if (jButton5 == null) {
jButton5 = new JButton();
jButton5.setText("Góra /\");
jButton5.setSize(new Dimension(100, 20));
jButton5.setLocation(new Point(10, 134));
}
return jButton5;
}
private JButton getJButton6() {
if (jButton6 == null) {
jButton6 = new JButton();
jButton6.setText("\/ Dół");
jButton6.setSize(new Dimension(100, 20));
jButton6.setLocation(new Point(10, 159));
}
return jButton6;
}

}

Na czarno wyodrębniłem komponenty dzieki którym na razie chciałbym wczytać jakiś obrazek tzn JButton i PanelWczytajMapke. Czyli po naciśnieciu przycisku chciałbym obrazek w panelu.

.... Później muszę się jeszcze pomęczyć w ten sposób: bo mam JComboBox w którym są 3 możliwości do wyboru i chciałbym aby po wyborze jednej z możliwości, nacisnąc przycisk i wtedy się wyświetli obrazek... no ale tu też nie wiem co zrobić jak na razie, wiem ze będzie instukcja warunkowa IF potrzebna ale znowu nie wiem gdzie ją wstawić bo jakie warunki mają być to wiem, ale największy własnie problem dla mnie to GDZIE w tym moim konkretnym applecie powstawiać kod i instrukcje... przejrzałem naprawde sporo stronek ale nie potrafie się w tym połapać a jeśli ktoś z was potrafiłbym na tym moim przykładzie coś tam mi pokazać to byłoby mi później dużo łatwiej się pokapować o co chodzi... Dzięki:))

0

Poczytaj o obsłudze zdarzeń w Javie, w pierwszej kolejności o klasie ActionListener.

0
  1. to co przedmowca tylko nie rob bledu na action listenerze (niektorzy zeby zdefiniowac zrodlo uzywaja porownania strongow...lepiej jest rozwiazac na a.getSource==m_button1).
  2. sprawa wczytania obrazka - w klasie applet gdzies juz jest zaszyte createImage a jezeli nie to z toolkita
0

Co jest złego w składni

public void actionPerformed(ActionEvent ae)
{
   String cmd=ae.getActionCommand();
   if(cmd.equalsIgnoreCase("doSomething"))
   {
       doSomething();
   }
   .....
}

Używam jej bardzo często:

  • jeśli JButton nie jest polem w klasie
  • ta sama akcja podpięta jest do kilku obiektów
    pozdrawiam
0

Ahym. Ale na przykład tą podaną przez Ciebie instrukcje...

public void actionPerformed(ActionEvent ae)
{
String cmd=ae.getActionCommand();
if(cmd.equalsIgnoreCase("doSomething"))
{
doSomething();
}
.....
}

...w które miejsce w kodzie musze wstawić?? Bo to własnie jest dla mnie największy problem ze nie mam pojęcia gdzie, niby to proste a dla mnie to takie zawiłe że szkoda gadać. Mogę ją wstawić wobojętnie jakie miejsce?? Np pomiędzy instrukcjami opisującymi komponenty czy musze ją wstawić np gdzieś w kodzie opisującym przycisk który który ma wykonać pewna akcje...??

Ja próbowałem takiej instrukcji bo czytałem coś wcześnie własnie o ActionListenerze:

JButton mybtn = new JButton("Do Something");
mybtn.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
doMyAction(); // code to execute when button is pressed
}
}
);

i próbowałem wstawiać ją gdzie mi się logicznei wydawało że będzie dobrze ale nic tam się nie dzieje:| Jeśli ktoś z was tak na szybko umiałby dostosowac którąś z instrukcji do mojego programiku to byłbym bardzo wdzięczny i wtedy to jakoś bym sobie zaczął kombinować....

0

Np. tak
Instrukcje importu NetBeans zrobi chyba sam.

import java.event.ActionListener;
import java.event.ActionEvent;
.....
public class Misza extends JApplet implements ActionListener{

......
//gdzieś wewnątrz klasy
    public void actionPerformed(ActionEvent ae)
    {
         // tu będzie akcja
    }
.....
ten_przycisk_który_ma_wykonać akcję.addActionListener(this);

Kod wyprodukowany przez ten VisualEditor jest "pokręcony". Więcej zrozumiesz z Javy jak będziesz pisał
cały kod.

0

No właśnie tez mi się coś tak wydaje że tak to może być w tym kodem, bo jak zaglądam na inne stronki z jakimiś przykładami z Javu i appletów to mam wrażenie jak by były pisane w jakimś innym języku niż ten mój:| A co lepsze Eclipse czy NetBeans?? Bo próbowałem wcześniej w tym NetBeansie pisać ale sporo osób mi powiedziało ze lepszy Eclipse jak na początek...

0

Ja wolę Eclipse. Za pokręcony kod odpowiada chyba VisualEditor.

0

No mi też wydaje się lepsiejszy ten Eclipse no i szybciej chodzi... Przynajmniej u mnie. A mam pytanko bo stworzyłem już projekt w Eclipsie no i teraz co dalej zrobić zeby stworzyć JApplet a nie Applet?? Naciskam na nazwe projektu, no i nie wiem co dalej zrobić...

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