Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Cambiare font del menu

    Ciao, io ho creato un menu "file" che ho inserito in un menuBar, adesso devo cercare di cambiare il font della scritta file..
    Se qualcuno sa qualcosa o ha qualche link, lo guardo volentieri...
    Grazie
    Vi metto il codice..

    Già che ci siamo qualcuno sa anche il metodo per dare la possibilità di allargare la finestra di un JComponent...setResizable() è solo per il JFrame.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Cambiare font del menu

    Originariamente inviato da Paoletta_r
    Ciao, io ho creato un menu "file" che ho inserito in un menuBar, adesso devo cercare di cambiare il font della scritta file..
    Se qualcuno sa qualcosa o ha qualche link, lo guardo volentieri...
    JMenuItem è-un JComponent, pertanto ha il metodo public void setFont(Font font)

    Originariamente inviato da Paoletta_r
    Già che ci siamo qualcuno sa anche il metodo per dare la possibilità di allargare la finestra di un JComponent...setResizable() è solo per il JFrame.
    Intendi dire come poter ridimensionare un componente? Se puoi farlo, dipende se hai usato (e quale hai usato) un layout manager.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Per quanto riguarda il menu ho provato setFont ma vale solo per le voci del menu, io devo cambiare proprio la scritta "file".
    Io ho usato:
    Menu menuFile = new Menu("File");

    Per quanto riguarda il problema di allargare la finestra, questo è il mio codice...
    codice:
    package jcshell.gui;
    /*
     * This class create a dialog box for choice a font, size and style.
     * 
     * */
    
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.*;
    
    
    public class FontChooser extends JComponent{
      private JComboBox fontNameBox;
    
      private JComboBox fontSizeBox;
      
      private JComboBox fontStyleBox;/**/
     public JTextArea example;
      
      public FontChooser() {
        fontNameBox = new JComboBox();
        fontSizeBox = new JComboBox();
        fontStyleBox = new JComboBox();/**/
        example=new JTextArea("Your Text");
        String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
        for ( int i = 0; i < fonts.length; i++)
        	fontNameBox.addItem(fonts[i]);
        for ( int i = 10; i < 40; i++)
          fontSizeBox.addItem(new Integer(i));
        fontStyleBox.addItem("Normal");
        fontStyleBox.addItem("Bold");
        fontStyleBox.addItem("Italic");
        fontStyleBox.setSelectedItem(Font.PLAIN);    
        fontSizeBox.setSelectedIndex(12);
        setLayout(new GridLayout());
        JPanel comboBoxPanel = new JPanel();
        comboBoxPanel.add(fontNameBox);
        comboBoxPanel.add(fontSizeBox);
        comboBoxPanel.add(fontStyleBox);   
        add(comboBoxPanel);
     
        JPanel TextPanel = new JPanel();
        TextPanel.add(example);
        add(TextPanel);
        setBorder(BorderFactory.createTitledBorder("Font"));
        ActionListener eventForwarder = new ActionListener() {
          public void actionPerformed(ActionEvent e) {
        	 final int style;
        	    if(fontStyleBox.getSelectedItem()=="Italic")
        			style = Font.ITALIC;
        			else if(fontStyleBox.getSelectedItem()=="Bold")
        				style = Font.BOLD;
        			else style=Font.PLAIN;
           setFont(new Font((String)fontNameBox.getSelectedItem(), style, ((Integer)fontSizeBox.getSelectedItem()).intValue()));
            Font unfont = new Font((String)fontNameBox.getSelectedItem(), style, ((Integer)fontSizeBox.getSelectedItem()).intValue());
    	    example.setFont(unfont);
          }
        };
        fontNameBox.addActionListener(eventForwarder);
        fontSizeBox.addActionListener(eventForwarder);
        fontStyleBox.addActionListener(eventForwarder);
      }
    
      public void setFont(Font f) {
        super.setFont(f);
        // Questa chiamata genera un PropertyChangeEvent
        fontNameBox.setSelectedItem(f.getName());
        fontSizeBox.setSelectedItem(new Integer(f.getSize()));
        fontStyleBox.setSelectedItem(f.getName());
        example.setFont(f);
      }
    
      public static Font showFontChooser(Component parent, String title, Font initialFont) {
    	  FontChooser fc = new FontChooser();
        fc.setFont(initialFont);
        int answer = JOptionPane.showConfirmDialog(parent, fc, title, JOptionPane.OK_CANCEL_OPTION);
        if ( answer != JOptionPane.OK_OPTION )
        	return null;
        
        else{
          return fc.getFont();
        }
      }
    
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Paoletta_r
    Per quanto riguarda il menu ho provato setFont ma vale solo per le voci del menu, io devo cambiare proprio la scritta "file".
    Ok, già è vero, la scritta "File" sarebbe un JMenu. Ma non cambia nulla. JMenu e JMenuItem sono dei JComponent, pertanto entrambi hanno il metodo setFont. Crea un nuovo Font e passalo a questo metodo.

    Originariamente inviato da Paoletta_r
    Per quanto riguarda il problema di allargare la finestra, questo è il mio codice...
    codice:
    ....
    Innanzitutto dipende da cosa vuoi allargare ... che non ho capito.

    Innanzitutto noto che hai esteso JComponent. Questa scelta è sicuramente discutibile .... Il tuo FontChooser è quindi un componente che potrebbe essere usato in un qualunque punto di una qualunque interfaccia grafica Swing.
    Hai messo un metodo statico showFontChooser() che fa nient'altro che creare un FontChooser da visualizzare poi in un JOptionPane. Anche questa scelta è discutibile ...
    Se il tuo interesse quindi non è quello di realizzare un componente "pubblico" da usare in mille altri casi, ti bastava creare una classe FontChooser che NON estende JComponent, che conteneva quel metodo statico e una classe innestata (magari private) che estendeva da JPanel e che conteneva l'implementazione del tuo font-chooser.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Prima di tutto grazie, ancora una volta sono riuscita a sistemare il discorso del menu in seguito ad un tuo suggeriemento..ho cambiato Menu in JMenu..

    Per il secondo problema mi sto applicando, classi all'interno di classi non posso metterne, e avevo già provato a togliere extend JComponent ma mi dava un sacco di errori allora ho tralasciato.

    Adesso però cerco di modificare seguendo le tue linee guida.

    Ancora Grazie..

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Paoletta_r
    ho cambiato Menu in JMenu..
    Non mischiare mai l'uso di componenti AWT e di componenti Swing. Se la tua interfaccia è fatta con Swing, usa solo componenti Swing.

    Originariamente inviato da Paoletta_r
    classi all'interno di classi non posso metterne
    Perché?? Non ti piacciono?

    Originariamente inviato da Paoletta_r
    avevo già provato a togliere extend JComponent ma mi dava un sacco di errori
    Beh, certo perché non avresti più potuto fare un add(), ad esempio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Non posso mettere classi all'interno di classi perchè il mio relatore non le vuole...ed è stato perentorio in merito..
    Java non lo conosco molto bene..ho sempre preferito il c..è per questo che ogni tanto faccio scelte incomprensibili, anche se ultimamente lo sto rivalutando.

  8. #8
    Ho creato un nuovo font chooser ma adesso ho sempre il solitissimo problema...come faccio per far espandere i componenti con il pannello..????
    Se qualcuno lo vuole provare c'è anche il main...
    codice:
     
    import javax.swing.JButton;
    import java.awt.*;
    import java.awt.GraphicsEnvironment;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    
    public class provaFont extends JFrame{
    	private List fontNameBox;
    
    	  private List fontSizeBox;
    	  
    	  private List fontStyleBox;/**/
    	 public JTextArea example;
    	 public String resultName;
    	 public int resultSize;
    	 public String resultStyle;
    	 public Font font;
    	 
    	 public provaFont(){
    		 super("Font Chooser");
    		 
    		 Container cp = getContentPane();
    
    		    Panel top = new Panel();
    		    top.setLayout(new FlowLayout());
    		    
    		    fontNameBox = new List(8);
    		    top.add(fontNameBox);
    		    String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
    		    for ( int i = 0; i < fonts.length; i++)
    		    	fontNameBox.add(fonts[i]);
    		    fontNameBox.select(0);
    		    
    		    fontSizeBox = new List(8);
    		    top.add(fontSizeBox);		    
    		    for ( int i = 10; i < 40; i++)
    		        fontSizeBox.add(String.valueOf(i));
    		    fontSizeBox.select(0);
    		    
    		    fontStyleBox = new List(8);
    		    top.add(fontStyleBox);		    
    		    	fontStyleBox.add("Normal");
    		    	fontStyleBox.add("Bold");
    		    	fontStyleBox.add("Italic");
    		    fontStyleBox.select(0);
    		    
    		    cp.add(top, BorderLayout.NORTH);
    		    example=new JTextArea("Your Text");
    			 example.setEditable(false);
    			 cp.add(example, BorderLayout.CENTER);
    			
    			 
    			 Panel bot = new Panel();
    			 JButton okButton = new JButton("Apply");
    			    bot.add(okButton);
    			    okButton.addActionListener(new ActionListener() {
    			      public void actionPerformed(ActionEvent e) {
    			        //previewFont();
    			    	  font=FontChose();
    			        dispose();
    			        setVisible(false);
    			      }
    			    });
    			    
    			    JButton canButton = new JButton("Cancel");
    			    bot.add(canButton);
    			    canButton.addActionListener(new ActionListener() {
    			      public void actionPerformed(ActionEvent e) {
    			        // Set all values to null. Better: restore previous.
    			    	  font=null;
    			        dispose();
    			        setVisible(false);
    			      }
    			    });
    
    			    cp.add(bot, BorderLayout.SOUTH);
    			      /**/
    			    
    			    ActionListener eventForwarder = new ActionListener() {
    			        public void actionPerformed(ActionEvent e) {
    			        	Font ft;
    			        	ft=FontChose();
    			        // setFont(new Font((String)fontNameBox.getSelectedItem(), style, ((Integer)fontSizeBox.getSelectedItem()).intValue()));
    			         // Font unfont = new Font((String)fontNameBox.getSelectedItem(), style, ((Integer)fontSizeBox.getSelectedItem()).intValue());
    			  	    example.setFont(ft);
    			        }
    			      };
    			      fontNameBox.addActionListener(eventForwarder);
    			      fontSizeBox.addActionListener(eventForwarder);
    			      fontStyleBox.addActionListener(eventForwarder);
    			    
    			    
    			    /**/
    			    
    			    this.pack();
    			    this.setLocation(200, 100);/*set a position of windows*/
    			    this.setVisible(true);	
    			    this.setResizable(true); 
    		   
    	 }
    	
    	 public Font FontChose(){
    		 Font ft;
    		 int style;
    		 
    		resultName =fontNameBox.getSelectedItem();
    		 resultSize=(Integer.valueOf(fontSizeBox.getSelectedItem()));
    		 if(fontStyleBox.getSelectedItem()=="Italic")
     			style = Font.ITALIC;
     			else if(fontStyleBox.getSelectedItem()=="Bold")
     				style = Font.BOLD;
     			else style=Font.PLAIN;
    		 ft = new Font(resultName,style ,resultSize);
    		 
    		 return ft;
    		 
    	 }
    	 
    	 public Font getSelectFont(){
    		 return font;
    	 }
    	 
    	 public static void main (String[] args) {
    		   
    		 provaFont p= new provaFont();
    	 }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.