Přistup z vedlejsi třídy. – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přistup z vedlejsi třídy. – Java – Fórum – Programujte.comPřistup z vedlejsi třídy. – Java – Fórum – Programujte.com

 

Fires0
Newbie
1. 9. 2010   #1
-
0
-

zdravim .. Mam takovou zacatecnickou chybu ale sakra nemuzu prijit na to proc to tak je .. mam dve tridy . MainFrame.java (jFrame) a ControlPanel(jPanel) .. potrebuji pristoupit z ControlPanel a zmenit text v jLabelech v MainFrame.. ale nemuzu bo me furt pise ze neni pristup pritom sou public ...

package MainPackage;

import javax.swing.JLabel;

/**
*
* @author Fires
*/
public class MainFrame extends javax.swing.JFrame {

/** Creates new form MainFrame */
public MainFrame() {
initComponents();
}

private void initComponents() {

controlPanel1 = new MainPackage.ControlPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

javax.swing.GroupLayout controlPanel1Layout = new javax.swing.GroupLayout(controlPanel1);
controlPanel1.setLayout(controlPanel1Layout);
controlPanel1Layout.setHorizontalGroup(
controlPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
controlPanel1Layout.setVerticalGroup(
controlPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);

jLabel1.setText("jLabel1");

jLabel2.setText("jLabel2");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(controlPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel2)))
.addContainerGap(353, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(controlPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addContainerGap(150, Short.MAX_VALUE))
);

pack();
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainFrame().setVisible(true);
}
});
}

public void setjLabel1(JLabel jLabel1) {
this.jLabel1 = jLabel1;
}

public void setjLabel2(JLabel jLabel2) {
this.jLabel2 = jLabel2;
}

// Variables declaration - do not modify
private MainPackage.ControlPanel controlPanel1;
public javax.swing.JLabel jLabel1;
public javax.swing.JLabel jLabel2;
// End of variables declaration

}






/*
* ControlPanel.java
*
* Created on 1.9.2010, 17:24:30
*/

package MainPackage;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

/**
*
* @author Fires
*/
public class ControlPanel extends javax.swing.JPanel implements MouseMotionListener{

/** Creates new form ControlPanel */
public ControlPanel() {
initComponents();
this.setSize(300, 300);
MainFrame.jLabel1.setText("test"); // a tohle presne nejede :D
}
@Override
public void paint(Graphics g){
g.setColor(Color.WHITE);
g.drawLine(0, 150, 300, 150);
g.drawLine(150, 0, 150, 300);
}

private void initComponents() {

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
}

public void mouseDragged(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

public void mouseMoved(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

}

Nahlásit jako SPAM
IP: 193.165.147.–
liborb
~ Redaktor
+18
Guru
2. 9. 2010   #2
-
0
-

To ani nemůže jít, protože proměnná MainFrame není v ControlPanel definována. Přímo by to šlo pouze v případě, že by si přistupoval ke statickým metodách a/nebo proměnným. Jinak potřebuješ předat referenci na instanci.

Takže v MainFrame

controlPanel1 = new MainPackage.ControlPanel(this);


a v ControlPanel


// clenska promemenna pro dalsi vyuziti
MainFrame frame;

public ControlPanel(MainFrame frame) {
initComponents();
this.setSize(300, 300);
this.frame = frame; // kdyby si to chtel jeste nekdy v ControlPanel pouzit
frame.jLabel1.setText("test");
}


Nahlásit jako SPAM
IP: 85.207.166.–
Fires0
Newbie
2. 9. 2010   #3
-
0
-

Dik za odpoved. Ja vim , taky mi to pak prislo na rozum kdyz sem se na to s odstupem podival a zjistil sem ze to je proste pytlovina :D to je tak kdyz uz do toho clovek cuci dlouho a pak nevidi pres mouchu slona .. Ale mel bych takovou prozbu nebyl by si ochotnej mi obcas dat par konzultaci ohledne Javy ?

Vcera sem se treba vrhnul na grafickej joystick a i kdyz pouzivam metodu repaint() .. Furt mi tam dost casto zustavaj na nejakej cas i stare pozice a tak .. proste takove detaily ale v jave sem pomerne novej takze bych potreboval kritiku.

Nahlásit jako SPAM
IP: 193.165.147.–
liborb
~ Redaktor
+18
Guru
3. 9. 2010   #4
-
0
-

Hmmmm ... lákavá nabídka :smile1: . Řekl bych, že to stačí dávat sem na fórum a on se vždycky najde nějakej dobrák, co ti na tom nenechá nit suchou. Alespoň budeš mít veřejnou kontrolu, že tě netahá za nos :smile1:. Pokud sis to představoval jinak, tak můžeš nastínit svoji představu a uvidíme ...

Nahlásit jako SPAM
IP: 85.207.166.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý