Originariamente inviato da fermat
uhm....il "problema" è che la costruendo con netbeans e il layout manager.
Usare NetBeans per programmare non dovrebbe essere un problema: chi comanda sei sempre tu, non l'ambiente di sviluppo.
I LayoutManager si usano sempre, non c'entra l'ambiente di sviluppo. Ed infatti ti ho consigliato ti usare il BorderLayout.
avevo pensato di impostare la dimensione sottraendo la dimensione del JFrame a quella del JPanel di sinistra che dimensione fissa.
però nn ha funzionato un granchè.
secondo te come soluzione è fattibile??
Non mi pare una soluzione corretta... almeno non quando questo lavoro lo può già fare il LayoutManager per te.
Bastano davvero pochissime righe per ottenere il risultato. Questo qui sotto è un esempio completo, funzionante e avviabile.
codice:
import java.awt.*;
import javax.swing.*;
public class MiaFinestra extends JFrame {
private JPanel pannelloSinistro;
private JPanel pannelloDestro;
public MiaFinestra() {
Container c = getContentPane();
c.setLayout( new BorderLayout() );
// Creo il pannello sinistro di dimensione fissa
pannelloSinistro = new JPanel();
// Imposto la dimensione fissa
pannelloSinistro.setPreferredSize( new Dimension(200, 600) );
// ... e i colori
pannelloSinistro.setOpaque( true );
pannelloSinistro.setBackground( Color.GREEN.darker() );
// Questo il pannello "variabile"
pannelloDestro = new JPanel();
pannelloDestro.setOpaque( true );
pannelloDestro.setBackground( Color.BLUE );
// Li aggiungiamo alla finestra
c.add(pannelloSinistro, BorderLayout.WEST);
c.add(pannelloDestro, BorderLayout.CENTER);
setResizable( true );
setTitle("Finestra di prova");
setDefaultCloseOperation( EXIT_ON_CLOSE );
setSize(800, 600);
setVisible( true );
}
public static void main(String[] args) {
MiaFinestra mf = new MiaFinestra();
}
}
Puoi ridimensionare la finestra come ti pare: il pannello verde avrà sempre la stessa larghezza (200 px).
Ciao.