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.");
}
}
Fórum › Java
Přistup z vedlejsi třídy.
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");
}
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.
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 ...
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Přístup k objektům jedné třídy ze třídy druhé — založil ProgDan
Přístup k private funkcím z jiné třídy — založil ARN
Hra - třídy, podtřídy, přístup k nim a jejich mazání — založil Tuqi
Prvky na vedlejší diagonále — založil El
Windows api vedlejší okno — založil XANTAY
Moderátoři diskuze