Piccolo Menù

Elenuccia08

Nuovo Utente
29 Gen 2011
4
0
0
Ciao a tutti ^_^ appena iscritta, non so se qui potete aiutarmi
Sto creando un piccolo jframe per settare i caratteri di un editor di testo che sto facendo per un'esame. E' a quello di notepad, ma più semplice. Con 3 jlist per scegliere dimensione, stile e font, 3 etichette, una label che mostri come viene modificato il carattere e i tasti OK e Annulla. Sono un po scarsa con la grafica, infatti quando cambio la dimensione del carattere della label i pannelli si sovrappongono, e in più non riesco a modificare la dimensione delle jlist. Questo è il codice che ho scritto, probabilmente sarà pieno di errori. Dove sbaglio? Grazie a tutti

listaDimensioni = new JList();
listaFont = new JList();
listaEffetti = new JList();

scroll1 = new JScrollPane(listaFont);
scroll2 = new JScrollPane(listaDimensioni);
scroll3 = new JScrollPane(listaEffetti);

pannelloScroll = new JPanel(new GridLayout(1, 3, 30, 20));
pannelloScrollEsterno = new JPanel();

scroll1.setPreferredSize(new Dimension(90, 100));
scroll2.setPreferredSize(new Dimension(30, 100));
scroll3.setPreferredSize(new Dimension(90, 100));

listaFont.setListData(font);
listaDimensioni.setListData(dimensioni);
listaEffetti.setListData(effetti);

pannelloScroll.add(scroll1);
pannelloScroll.add(scroll2);
pannelloScroll.add(scroll3);
pannelloScrollEsterno.add(pannelloScroll);

pannelloEtichette = new JPanel(new GridLayout(1, 3, 20, 100));

tipoCarattere = new JLabel(" Tipo di carattere");
stile = new JLabel(" Punti");
punti = new JLabel(" Stile ");

pannelloEtichette.add(tipoCarattere);
pannelloEtichette.add(stile);
pannelloEtichette.add(punti);
pannelloEtichette.setSize(10, 10);

pannelloEsempio = new JPanel(new GridLayout(2, 3, 10, 50));
pannelloEsempio2 = new JPanel();
pannelloEsempio3 = new JPanel();
pannelloEsempio4 = new JPanel();
//pannelloEsempio2, 3 e 4 sono pannelli vuoti creati come riempimento per
//far stare i pulsanti e l'etichetta in determinati punti
esempio = new JLabel("Esempio");

ok = new JButton("Ok");
annulla = new JButton("Annulla");

pannelloEsempio.add(pannelloEsempio2);
pannelloEsempio.add(esempio);
pannelloEsempio.add(pannelloEsempio3);
pannelloEsempio.add(pannelloEsempio4);
pannelloEsempio.add(ok);
pannelloEsempio.add(annulla);

menuCarattere = new JFrame("Menù Carattere");

content.setSize(100, 100);
content.add(pannelloScrollEsterno, BorderLayout.NORTH);
content.add(pannelloEtichette, BorderLayout.CENTER);
content.add(pannelloEsempio, BorderLayout.SOUTH);

menuCarattere.getContentPane().add(content);
 
Ciao, non sono riuscito a far girare il codice che hai postato....... Ho scritto queste righe di codice che mostrano una finestra dove puoi selezionare un font size e un font type. Quando cambi uno dei due valori la label di esempio cambia in accordo con i valori selezionati. Se premi il tasto "OK" viene cambiato anche il font della text area. Spero di esserti stato di aiuto.

ciao

Codice:
package it.test;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class NotePad implements ActionListener {

	private JLabel example;
	private JTextArea foglio;
	private JComboBox fontSizeCombo;
	private JComboBox fontTypeCombo;
	private JFrame frame;

	public static void main(String[] args) {

		javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
            	NotePad notePad = new NotePad();
            	notePad.createAndShowGUI();
            }
        });
	}
	
    private void createAndShowGUI() {
        //creo la finestra
        frame = new JFrame("Notepad");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // creo il panel per il menu
        JPanel menu = new JPanel();
        
        //dimensione font
        Integer[] fontSizeList = new Integer[]{12,14,16};
        fontSizeCombo = new JComboBox(fontSizeList);
        JLabel fontSizeLabel = new JLabel("Dimensione");

        // aggiungo un listener per verificare quando viene cambiato il font size
        fontSizeCombo.addActionListener(this);
        
        menu.add(fontSizeLabel);
		menu.add(fontSizeCombo);
        
		// tipo di font
		String[] fontList = new String[]{"Arial","Verdana", "Monospace"};
        fontTypeCombo = new JComboBox(fontList);
        JLabel fontLabel = new JLabel("Carattere");
        
        // aggiungo un listener per verificare quando viene cambiato il font
        fontTypeCombo.addActionListener(this);
       
        menu.add(fontLabel);
		menu.add(fontTypeCombo);
		
		// bottone di conferma
		JButton okButton = new JButton("OK");
		okButton.setName("OK");
		okButton.addActionListener(this);
		menu.add(okButton);
		
		//label di esempio
		JPanel examplePanel = new JPanel();
		example = new JLabel("Esempio");
		example.setFont(new Font("Arial",Font.PLAIN,12));
		examplePanel.add(example);
		
		
		//foglio dove scriver
		foglio = new JTextArea(30, 30);
		foglio.setText("Lorem ipsum dolor sit amet");
		foglio.setFont(new Font("Arial",Font.PLAIN,12));
		JPanel foglioPanel = new JPanel();
		foglioPanel.add(foglio);
		
		//aggiungo i panel alla finestra
		frame.add(menu,BorderLayout.NORTH);
		frame.add(examplePanel,BorderLayout.CENTER);
		frame.add(foglioPanel,BorderLayout.SOUTH);
		
        //mostro la finestra
        frame.pack();
        frame.setVisible(true);
    }


	@Override
	public void actionPerformed(ActionEvent actionEvent) {
		Object source = actionEvent.getSource();

		String fontType = (String) fontTypeCombo.getSelectedItem();
		Integer fontSize = (Integer) fontSizeCombo.getSelectedItem();

		// verifico se ha premuto OK o ha cambiato solo le combo
		if(source instanceof JButton){
			// ha premuto ok cambio il font della text area
			foglio.setFont(new Font(fontType, Font.PLAIN, fontSize));
			frame.pack();
		}else{
			// è cambiato qualcosa, resetto il font
			example.setFont(new Font(fontType, Font.PLAIN, fontSize));
		}
		
	}

}
 
Grazie mille davvero
mi hai messo anche i commenti, infatti mi sembra chiarissimo. Adesso lo adatto al mio codice e poi ti faccio sapere thanks
0:)
 
Tutto ok :-)
ho adattato tutto al meglio, grazie mille
Ti chiedo un'ultima cosa se posso.
Ho visto che hai dichiarato alcuni componenti private, come mai?
Io nel mio lavoro ho dichiarato tutto public :confused:
E poi un'altra cosina, l'etichetta ESEMPIO la vorrei un po più giù, ho provato a spostarla in mille modi, ma nulla. Hai qualche consiglio?
Grazie, giuro che dopo questa, sparisco :)
 

Discussioni simili