Mantendo a seleção depois de clicar em um jbutton para estilizar texto
Pergunta
Estou fazendo um editor de texto bastante simples e tenho uma pergunta sobre meus botões de estilo. Quando destaque o texto e clico no meu botão "Bold", o texto ousado como esperado, mas minha seleção não é mais visível. Ainda posso desconcertar a seleção, em itálico ou sublinhá -la, mas você simplesmente não consegue ver o que é selecionado. Então, estou me perguntando se há uma configuração que me permitirá clicar no botão, mas mantenha minha seleção? Eu tentei um jmenuitem em vez de um jbutão, e isso parecia funcionar, mas depois fazia minha barra de ferramentas parecer bastante ruim. Código de exemplo abaixo.
//frame and pane creation up here
JToolBar tool = new JToolBar();
JToggleButton boldButton = new JToggleButton("Bold");
boldButton.addActionListener(new StyledEditorKit.BoldAction());
tool.add(boldButton);
Qualquer ajuda é apreciada.
Solução
Então, estou me perguntando se há uma configuração que me permitirá clicar no botão, mas mantenha minha seleção?
boldButton.setFocusable( false );
Outras dicas
Como você notou, a seleção ainda está lá, mas clicar no botão da barra de ferramentas remove o foco do painel de texto e esconde a seleção. Você precisa definir o foco de volta usando requestFocus
. No entanto, você precisará escrever seu próprio ouvinte de ação para adicionar o código de foco - você pode estender BoldAction
para fazer isso.