Jako nowy uczestnik Witam Wszyskich.
Mój problem polega natym że niepotrafie zaimplementować reakcji na wciśnięcie JButtona zawartego w JPanel1. Reakcja ta miła by powstać na drugim panelu w postaci wyrysowania jakiegoś krztałtu.
public class OknoGlowne extends JFrame{
OknoGlowne(){
setSize(800,500);
PanelRysunku panelRysunkuSciana=new PanelRysunku(panelPrzyciskow);
PanelPrzyciskow panelPrzyciskow=new PanelPrzyciskow(panelRysunkuSciana);
Container powZawartosci=getContentPane();
powZawartosci.add(panelRysunkuSciana,BorderLayout.CENTER);
powZawartosci.add(panelPrzyciskow,BorderLayout.SOUTH);
}
PanelRysunku panelRysunkuSciana;
PanelPrzyciskow panelPrzyciskow;
}
///////////////////////////////////////////////////////////
public class PanelPrzyciskow extends JPanel{
PanelPrzyciskow(PanelRysunku panRysSciana){
add(wspPunktuOsX);
add(wspPunktuOsY);
add(zatwierdz);
add(cofnij);
add(losowanie);
add(rysowanie);
setBackground(Color.green);
wspPunktuOsX.getDocument().addDocumentListener(sluchaczTF);
wspPunktuOsY.getDocument().addDocumentListener(sluchaczTF);
zatwierdz.addActionListener(sluchaczZatwierdz);
rysowanie.addActionListener(sluchaczRysowanie);
sciana=new ZbiorWierzcholkowPowierzchni();
panelRysunku=panRysSciana;
}
void zapiszParametryOdTextFielda(){
try {
szer = Double.parseDouble(wspPunktuOsX.getText().trim());
wys = Double.parseDouble(wspPunktuOsY.getText().trim());
//
}
catch (NumberFormatException w) { System.out.println("zapany wyjatek nie ma kompletu inf o wsp szer"); }
}
public ArrayList getZbiorWierzcholkowPowierzchni(){
return sciana.getPoint2DArray();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
System.out.println("paintCOmponent przyciskow jest uruchomiony");
}
JTextField wspPunktuOsX=new JTextField(7);
JTextField wspPunktuOsY=new JTextField(7);
JButton zatwierdz=new JButton("zatwierdz");
JButton cofnij=new JButton("cofnij");
JButton losowanie=new JButton("losowanie");
JButton rysowanie=new JButton("rysowanie");
SluchaczJText sluchaczTF=new SluchaczJText();
SluchaczJBZatwierdz sluchaczZatwierdz=new SluchaczJBZatwierdz();
SluchaczJBRysownaie sluchaczRysowanie=new SluchaczJBRysownaie();
ZbiorWierzcholkowPowierzchni sciana;
double szer,wys;
PanelRysunku panelRysunku;
private class SluchaczJText implements DocumentListener{
public void insertUpdate(DocumentEvent e) {zapiszParametryOdTextFielda();
}
public void removeUpdate(DocumentEvent e) {zapiszParametryOdTextFielda();
}
public void changedUpdate(DocumentEvent e) {throw new UnsupportedOperationException("Not supported yet.");
}
}
private class SluchaczJBZatwierdz implements ActionListener{
public void actionPerformed(ActionEvent e) {
sciana.addPoint2D(szer, wys);
for(int i=0;i<sciana.getSizeTabPunktow();i++){
System.out.println("get point "+ sciana.getPoint2D(i));
}
}
}
private class SluchaczJBRysownaie implements ActionListener{
SluchaczJBRysownaie(){}
public void actionPerformed(ActionEvent e) {
//getZbiorWierzcholkowPowierzchni();
System.out.println("rysowanie wlazone");
panelRysunku.rysowanieSciany();
//panelRysunku.repaint();
}
}
private class SluchaczJBCofnij implements ActionListener{
public void actionPerformed(ActionEvent e) {
}
}
}
//////////////////////////////////////////////
public class PanelRysunku extends JPanel {
PanelRysunku(PanelPrzyciskow panPrzyciskow){
setBackground(Color.WHITE);
panelPrzyciskow=panPrzyciskow;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
System.out.println("paintCOmponent rysunku jest uruchomiony");
}
void rysowanieSciany(){
//if(panelPrzyciskow.toString()){
//iloscScian=panelPrzyciskow.sciana.getIloscScian();
//for(int i=0;i<iloscScian;i++){
//double x1=panelPrzyciskow.sciana.getPoint2D(i).getX();
//double x2=panelPrzyciskow.sciana.getPoint2D(i+1).getX();
//double y1=panelPrzyciskow.sciana.getPoint2D(i).getY();
//double y2=panelPrzyciskow.sciana.getPoint2D(i+1).getY();
//linia=new Line2D.Double(x1, y1,x2,y2);
//}
//}
System.out.println("rysunku "+panelPrzyciskow.toString());
//rysowanieKrawędziSciany
//ile jest scian
//
}
private Line2D linia;
private int iloscScian=0;
private ArrayList wspWierzcholkow;
private PanelPrzyciskow panelPrzyciskow;
}
/////////////////////////////////////////
public class ZbiorWierzcholkowPowierzchni {
ZbiorWierzcholkowPowierzchni(){
tabPunktow=new ArrayList();
}
//interfejs do ArrayList tablicy Punktow
public void addPoint2D(double x,double y){
tabPunktow.add(new Point2D.Double(x,y));
}
public Point2D getPoint2D(int i){
return (Point2D) tabPunktow.get(i);
}
public ArrayList getPoint2DArray(){
return tabPunktow;
}
public void removePoint2D(){
tabPunktow.remove(tabPunktow.size());
}
public int getSizeTabPunktow(){
return tabPunktow.size();
}
public int getIloscScian(){
if(tabPunktow.size()>0){
return tabPunktow.size()-1;
}
else return 0;
}
/*public getKrawedzSciana(int i){
return
}*/
private ArrayList tabPunktow;
}
// jak na razie tojest niepotrzebne
class KrawedzSciany{
private Point2D tabKrawedziSciany[];
}
prosze o pomoc bo już bardzo długo się z tym męcze.
Dziękuję pozdrawiam