PDA

Visualizza la versione completa : (java) Creare bordi


abcd1000
17-01-2005, 12:19
Volevo creare un pannello con all'interno una lista di bottoni.
La lista di bottoni ha un titolo per quando vado ad eseguire il programma, il titolo risulta sovrapposto alla linea del bordo
Qualcuno sa dirmi dov' l'errore?



package it.panel;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;

/**
* @author f4068
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class ProvaBordo extends JPanel {

/**
*
*/
public ProvaBordo() {
//super("prova bordo");
super();
Border marginOutside = new EmptyBorder(10,10,10,10);
TitledBorder title = BorderFactory.createTitledBorder("bla bla bla bla bla");
CompoundBorder upperBorder = new CompoundBorder(marginOutside, title);
Border marginInside = new EmptyBorder(10,10,10,10);
this.setBorder(new CompoundBorder(upperBorder, marginInside));
this.setLayout(new GridLayout(0,1));
this.add(new JLabel("uno"));
this.add(new JLabel("uno"));
this.add(new JLabel("uno"));
this.add(new JLabel("uno"));

}

public static void main(String[] args) {
JPanel p = new ProvaBordo();
JFrame frame = new JFrame("ciao");
Container c = frame.getContentPane();
c.setLayout(new BorderLayout());
c.add("North", p);
frame.setSize(500, 600);
frame.setVisible(true);


}
}

perzem
17-01-2005, 14:41
prova ad usare un altro costruttore per i border



public static TitledBorder createTitledBorder(Border border,
String title,
int titleJustification,
int titlePosition)

se trovi difficolta basta che consulti la documentazione..

abcd1000
17-01-2005, 14:43
non un problema di costruttore, penso sia un problema di come "inscatolo" i vari bordi ma non capisco dov' l'errore

perzem
17-01-2005, 15:02
hai provato con l'editor grafico???

perzem
17-01-2005, 15:13
ma scusa che senso c' ad avere una lista all'interno di un bottongroup??
crea i bottoni e poi racchiudili direttamente nel bottongroup. Se metti un'etichetta al group questa per forza viene a sovrapporsi al suo stesso bordo

abcd1000
17-01-2005, 15:38
non ho capito la tua osservazione, non vedo nessun button group, cmq ho capito il problema, non si pu inscatolare un CompoundBorder all'interno di un CompoundBorder quindi una possibilie soluzione inscatolare un jpanel con bordo in un altro jpanel con bordo, ecco il codice funzionante:



package it.panel;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;

public class ProvaBordo {
static JPanel outsidePanel;
/**
*
*/
public ProvaBordo() {
JPanel insidePanel = new JPanel();
TitledBorder title = BorderFactory.createTitledBorder("bla bla bla bla bla");
Border marginInside = new EmptyBorder(10,10,10,10);
insidePanel.setBorder(new CompoundBorder(title, marginInside));
insidePanel.setLayout(new GridLayout(0,1));
insidePanel.add(new JLabel("uno"));
insidePanel.add(new JLabel("uno"));
insidePanel.add(new JLabel("uno"));
insidePanel.add(new JLabel("uno"));

outsidePanel = new JPanel();
outsidePanel.setLayout(new BorderLayout());
outsidePanel.setBorder(new EmptyBorder(10,10,10,10));
outsidePanel.add(insidePanel);

}

public static void main(String[] args) {
new ProvaBordo();
JFrame frame = new JFrame("ciao");
Container c = frame.getContentPane();
c.setLayout(new BorderLayout());
c.add("North", outsidePanel);
frame.setSize(500, 600);
frame.setVisible(true);
}
}

Loading