0

我正在学习一门课程,理论上,我已经能够处理 POO、、、、JFrame事件JPanel和布局。我在 Swing 组件的中间,我正在尝试扩展老师所做的一种做法。

目标是通过一些 JItem 修改选定的文本。老师使用 JItem 修改所选文本的大小,方法与修改格式和样式的方式相同。就我而言,我想使用 aJSpinner仅控制选定的文本。我不知道我能不能做到这一点。

我附上了我所做的代码。

public class ProcesadorDeTextos {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        MarcoProcesador marquito = new MarcoProcesador();
        marquito.setDefaultCloseOperation(3);
    }

}

class MarcoProcesador extends JFrame{
    
    MarcoProcesador(){
        setTitle("El Palabra");
        setBounds(300, 200, 800, 450);
        add(new LaminaProcesador());
        setVisible(true);
    }
}

class LaminaProcesador extends JPanel{
    
    public LaminaProcesador() {
        
        setLayout(new BorderLayout());
        
        //-----2 principle components
        campoTexto = new JTextPane();
        barraTools = new JMenuBar();
        
        //Scroll
        scrollTexto = new JScrollPane(campoTexto);
        
        //---------------toolbar/barraTools-------------
        fuente = new JMenu("Fuente");
        estilo = new JMenu("Estilo");
        configuraMenu("Arial", "fuente","Arial",1,1);
        configuraMenu("Courier", "fuente","Courier",1,1);
        configuraMenu("Verdana", "fuente","Verdana",1,1);
        
        configuraMenu("Negrita", "estilo","",Font.BOLD,1);
        configuraMenu("Cursiva", "estilo","", Font.ITALIC,1);
        
        configuraMenu("", "","", 1,1);
        
        
        barraTools.add(fuente);
        barraTools.add(estilo);
        
        
        
        
        //-------------------Adding principal components----------------
        JPanel Herramientas = new JPanel();
        Herramientas.add(barraTools);
        add(scrollTexto, BorderLayout.CENTER);
        add(Herramientas, BorderLayout.NORTH);
    }
    
    private void configuraMenu(String rotulo, String menu, String tipoLetra, int estilos, int tamagnos) {
        JMenuItem elemMenu = new JMenuItem(rotulo);
        if(menu == "fuente") {
            fuente.add(elemMenu);
            elemMenu.addActionListener(new StyledEditorKit.FontFamilyAction("cambiaLetra", tipoLetra));
            // StyledEditorKit.FontFamilyAction ya tiene el método ActionPerformed desarrollado
        }
        else if(menu == "estilo") {
            estilo.add(elemMenu);
            if(estilos == Font.BOLD) {
                elemMenu.addActionListener(new StyledEditorKit.BoldAction());
            }
            else elemMenu.addActionListener(new StyledEditorKit.ItalicAction());
        }
        else {
            JSpinner size = new JSpinner(new SpinnerNumberModel(12, 8, 24, 2));
            size.setPreferredSize(new Dimension (45,2));
            //size.addChangeListener(new StyledEditorKit.FontSizeAction("cambiaTamaño", ));
            barraTools.add(size);
        }
        
    }
    
    
    private JTextPane campoTexto;
    private JScrollPane scrollTexto;
    private JMenuBar barraTools;
    private JMenu fuente, estilo;

}
4

0 回答 0