Προς το περιεχόμενο

netbeans & jfreechart


Loukisgr

Προτεινόμενες αναρτήσεις

Δημοσ.

Χαίρεται,

 

έχω μια ερώτηση σχετικά με το netbeans και μετά με το jfreechart.

 

Στο πρώτο μπορείς εύκολα να κάνεις jframe αλλά δημιουργεί αυτόματα ένα block κώδικα το οποίο δεν μπορούμε να διαχειρισθούμε. Έστω οτι θέλω να προσθέσω μετά ένα JButton και όχι με (drag and drop) πώς θα το κάνω?. Δοκίμασα με διάφορους τρόπους αλλά το κουμπί δεν εμφανίζονταν. π.χ

 

initComponents(); //του netbeans

this.add(b1); //β1 το κομπί

b1.setVisible(true);

 

τί κάνω λάθος;

 

Και η δεύτερη ερώτηση. Πώς μπορώ να βάλω ένα barchart σε ένα έτοιμο jframe και όχι να δημιουργεί καινούριο όπως γίνεται σε όλα τα παραδ. του jfreechart;

 

Έχω κάνει μια νέα κλάση για το γράφημα αλλά οτι extend και να κάνω jcomponent, jpanel ktl δέν έχω καταφέρει να το εμφανίσω.

 

Ευχαριστώ εκ των προτέρων

Δημοσ.

Για την πρώτη ερώτηση:

Πρέπει να κάνεις this.getContentPane().add(b1)

Να θυμάσαι ότι στην Swing πρέπει πάντα να προσθέτεις κάτι στο content pane του JFrame και όχι στο ίδιο το frame.

Δημοσ.

Εχεις δίκαιο απλά θεώρησα οτι το this δείχνει στο content αλλά πάλι δεν εμφανίζει το κουμπί

 

this.getContentPane().add(b1);

 

το γράφω σε λάθος σημείο?

Δημοσ.

public class finance_diagram_window extends window {

 

public finance_diagram_window() {

 

initComponents();

chart1.setSize(200, 200);

this.getContentPane().add(chart1);

this.getContentPane().add(b1);

b1.setVisible(true);

 

}

 

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

 

chart = new info.monitorenter.gui.chart.Chart2D();

main_menu_jButton = new javax.swing.JButton();

 

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

setTitle("Finances");

setResizable(false);

addWindowListener(new java.awt.event.WindowAdapter() {

public void windowActivated(java.awt.event.WindowEvent evt) {

formWindowActivated(evt);

}

});

 

javax.swing.GroupLayout chartLayout = new javax.swing.GroupLayout(chart);

chart.setLayout(chartLayout);

chartLayout.setHorizontalGroup(

chartLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGap(0, 330, Short.MAX_VALUE)

);

chartLayout.setVerticalGroup(

chartLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGap(0, 202, Short.MAX_VALUE)

);

 

main_menu_jButton.setText("Main Menu");

main_menu_jButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

main_menu_jButtonActionPerformed(evt);

}

});

 

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(92, 92, 92)

.addComponent(chart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup()

.addGap(196, 196, 196)

.addComponent(main_menu_jButton)))

.addContainerGap(81, Short.MAX_VALUE))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(28, 28, 28)

.addComponent(chart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 171, Short.MAX_VALUE)

.addComponent(main_menu_jButton)

.addGap(26, 26, 26))

);

 

pack();

}// </editor-fold>

 

ITrace2D income = new Trace2DSimple();

ITrace2D expence = new Trace2DSimple();

ITrace2D all = new Trace2DSimple();

barchart chart1 = new barchart("test");

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

JButton b1 = new JButton("ok");

 

 

 

private info.monitorenter.gui.chart.Chart2D chart;

private javax.swing.JButton main_menu_jButton;

 

 

}

 

Σε μικρογραφία. Η init έχει φτιαχτεί απο το netbeans καθώς και h main

Δημοσ.

Πρώτον,γιατί η δεν κάνεις extend το JFrame και κάνεις το window?

Είναι κάποια δική σου τάξη αυτή?Γιατί κανονικά το window γράφεται Window.

Αν δεν είναι δική σου τότε να ξέρεις ότι το Window είναι του AWT και όχι του πακέτου swing.Εν ολίγης έχεις μπερδέψει AWT και Swing σε αυτήν την εφαρμογή,πράγμα που δεν είναι καλό.

 

Όσο αναφορά το κουμπί,δεν βλέπω λόγο γιατί να μην το τοποθετήσεις χρησιμοποιώντας τον GUI editor του NetBeans.

Τέλος πάντων....χρησιμοποιείς το GroupLayout (Free Design το αναφέρει το NetBeans) πράγμα που σημαίνει ότι πρέπει να χρησιμοποιήσεις τον layout manager αυτόν για να τοποθετήσεις οτιδήποτε στο παράθυρό σου.Διάβασε λίγο για το GroupLayout ή επέλεξε να χρησιμοποιήσεις άλλο layout manager.

 

Αν όλα αυτά που λέω σου φαίνονται Κινέζικα τότε ή κάνε το περιβάλλον αποκλειστικά με τον editor του netbeans ή ξεκίνα λίγο να διαβάζεις για swing.

Δημοσ.

ναι η window είναι δικιά μου κλάση. Λες γι αυτό να μην λειτουργεί; Δεν θα πρέπει να κάνω χρήση του layout που έχει κάνει το netbeans; Το βλέπεις το chart; Αυτός είναι ο λόγος για τον οποίο προσπαθώ να βάλω το κουμπί με αυτόν τον τρόπο. Θέλω να εμφανιστεί το char κάτι που δεν το κάνει

Δημοσ.

Μπορείς φυσικά να κάνεις χρήση του layout αλλά πρέπει να χρησιμοποιήσεις τον layout manager αυτόν για να βάλεις κάτι στο παράθυρό σου.

Ένα απλό this.getContentPane().add(b1) δεν φτάνει.

 

Για να κάνεις πιο εύκολη την ζωή σου,γιατί δεν βάζεις το κουμπάκι αυτό σε ένα JToolBar?

Δημοσ.

Έκανα ένα jpanel με BorderLayout και λειτούργισε κανονικά. Το θέμα είναι οτι έκανα όλο αυτό, για το chart που συνεχίζει να μην εμφανίζει τπτ. Του έχω κάνει extend απο jframe σε panel αλλά τπτ. Σε ευχαριστώ πολύ να είσαι καλά. Αν έχεις καμμιά ιδέα πες μου.

Δημοσ.

Για να σου πω σίγουρα τι πρέπει να κάνεις πρέπει να δω όλο τον κώδικα αλλά και την βιβλιοθήκη για chart που χρησιμοποιείς.

Πάντως κοίταξε λίγο καλύτερα το documentation τις βιβλιοθήκης που χρησιμοποιείς, κατά πάσα πιθανότητα η λύση είναι εκεί μέσα

Δημοσ.

Σε ευχαριστώ πολύ για όλα αλλά επιτέλους το βρήκα!! Το jfreechart δίνει σαν argument ένα αντικείμενο που λέγετε chartPanel. Έτσι με μερικές αλλαγές που έκανα στην barchart κλάση μου κάνω add το jpanel1.add(chart1.chartPanel, BorderLayout.NORTH); και επιτέλους έχω το αποτέλεσμα!!

 

Σε ευχαριστώ πολύ που ασχολήθηκες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...