mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-07 22:40:53 +03:00
ToolBar: support non-button components in arrow-keys-only navigation (issue #346)
This commit is contained in:
@@ -27,6 +27,7 @@ import java.beans.PropertyChangeListener;
|
||||
import java.util.Map;
|
||||
import javax.swing.AbstractButton;
|
||||
import javax.swing.InputMap;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.LayoutFocusTraversalPolicy;
|
||||
import javax.swing.UIManager;
|
||||
@@ -262,27 +263,39 @@ public class FlatToolBarUI
|
||||
i = 0;
|
||||
|
||||
Component c = toolBar.getComponentAtIndex( i );
|
||||
|
||||
// see Component.canBeFocusOwner()
|
||||
if( c == null || !c.isEnabled() || !c.isVisible() || !c.isDisplayable() || !c.isFocusable() )
|
||||
continue; // skip
|
||||
|
||||
// check whether component has a empty input map to skip components that
|
||||
// are focusable, but do nothing when focused (e.g. JLabel)
|
||||
if( c instanceof JComponent ) {
|
||||
// see LayoutFocusTraversalPolicy.accept()
|
||||
InputMap inputMap = ((JComponent)c).getInputMap( JComponent.WHEN_FOCUSED );
|
||||
while( inputMap != null && inputMap.size() == 0 )
|
||||
inputMap = inputMap.getParent();
|
||||
if( inputMap == null )
|
||||
continue; // skip
|
||||
if( canBeFocusOwner( c ) ) {
|
||||
c.requestFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
c.requestFocus();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean canBeFocusOwner( Component c ) {
|
||||
// see Component.canBeFocusOwner()
|
||||
if( c == null || !c.isEnabled() || !c.isVisible() || !c.isDisplayable() || !c.isFocusable() )
|
||||
return false;
|
||||
|
||||
// special handling for combo box
|
||||
// see LayoutFocusTraversalPolicy.accept()
|
||||
if( c instanceof JComboBox ) {
|
||||
JComboBox<?> comboBox = (JComboBox<?>) c;
|
||||
return comboBox.getUI().isFocusTraversable( comboBox );
|
||||
}
|
||||
|
||||
// check whether component has a empty input map to skip components that
|
||||
// are focusable, but do nothing when focused (e.g. JLabel)
|
||||
// see LayoutFocusTraversalPolicy.accept()
|
||||
if( c instanceof JComponent ) {
|
||||
InputMap inputMap = ((JComponent)c).getInputMap( JComponent.WHEN_FOCUSED );
|
||||
while( inputMap != null && inputMap.size() == 0 )
|
||||
inputMap = inputMap.getParent();
|
||||
if( inputMap == null )
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// disable rollover border
|
||||
@Override protected void setBorderToRollover( Component c ) {}
|
||||
@Override protected void setBorderToNonRollover( Component c ) {}
|
||||
@@ -314,6 +327,8 @@ public class FlatToolBarUI
|
||||
* <li>Tab-key moves focus out of toolbar.</li>
|
||||
* <li>If moving focus into the toolbar, focus recently focused toolbar button.</li>
|
||||
* </ul>
|
||||
* If the toolbar contains non-button components (e.g. combobox), then the behavior
|
||||
* is slightly different. Non-button component are always included in Tab-key traversal.
|
||||
*
|
||||
* @since 2
|
||||
*/
|
||||
@@ -322,12 +337,40 @@ public class FlatToolBarUI
|
||||
{
|
||||
@Override
|
||||
public Component getComponentAfter( Container aContainer, Component aComponent ) {
|
||||
// if currently focused component is not a button,
|
||||
// then move focus to next component/button in toolbar
|
||||
if( !(aComponent instanceof AbstractButton) )
|
||||
return super.getComponentAfter( aContainer, aComponent );
|
||||
|
||||
// if currently focused component is a button,
|
||||
// then either move focus to next non-button component in toolbar (and skip buttons)
|
||||
// or move it out of toolbar
|
||||
Component c = aComponent;
|
||||
while( (c = super.getComponentAfter( aContainer, c )) != null ) {
|
||||
if( !(c instanceof AbstractButton) )
|
||||
return c;
|
||||
}
|
||||
|
||||
// move focus out of toolbar
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Component getComponentBefore( Container aContainer, Component aComponent ) {
|
||||
// if currently focused component is not a button,
|
||||
// then move focus to previous component/button in toolbar
|
||||
if( !(aComponent instanceof AbstractButton) )
|
||||
return super.getComponentBefore( aContainer, aComponent );
|
||||
|
||||
// if currently focused component is a button,
|
||||
// then either move focus to previous non-button component in toolbar (and skip buttons)
|
||||
// or move it out of toolbar
|
||||
Component c = aComponent;
|
||||
while( (c = super.getComponentBefore( aContainer, c )) != null ) {
|
||||
if( !(c instanceof AbstractButton) )
|
||||
return c;
|
||||
}
|
||||
|
||||
// move focus out of toolbar
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,553 @@
|
||||
/*
|
||||
* Copyright 2021 FormDev Software GmbH
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.formdev.flatlaf.testing;
|
||||
|
||||
import javax.swing.*;
|
||||
import com.formdev.flatlaf.FlatClientProperties;
|
||||
import net.miginfocom.swing.*;
|
||||
|
||||
/**
|
||||
* @author Karl Tauber
|
||||
*/
|
||||
public class FlatToolBarTest
|
||||
extends FlatTestPanel
|
||||
{
|
||||
public static void main( String[] args ) {
|
||||
SwingUtilities.invokeLater( () -> {
|
||||
FlatTestFrame frame = FlatTestFrame.create( args, "FlatToolBarTest" );
|
||||
frame.showFrame( FlatToolBarTest::new );
|
||||
} );
|
||||
}
|
||||
|
||||
FlatToolBarTest() {
|
||||
initComponents();
|
||||
|
||||
String notFocusableStyle = "background: darken($Panel.background,3%); focusableButtons: false";
|
||||
String focusableStyle = "background: darken($Panel.background,3%); focusableButtons: true; arrowKeysOnlyNavigation:true";
|
||||
|
||||
toolBar1.putClientProperty( FlatClientProperties.STYLE, notFocusableStyle );
|
||||
toolBar2.putClientProperty( FlatClientProperties.STYLE, notFocusableStyle );
|
||||
toolBar3.putClientProperty( FlatClientProperties.STYLE, focusableStyle );
|
||||
toolBar4.putClientProperty( FlatClientProperties.STYLE, focusableStyle );
|
||||
toolBar5.putClientProperty( FlatClientProperties.STYLE, notFocusableStyle );
|
||||
toolBar6.putClientProperty( FlatClientProperties.STYLE, notFocusableStyle );
|
||||
toolBar7.putClientProperty( FlatClientProperties.STYLE, focusableStyle );
|
||||
toolBar8.putClientProperty( FlatClientProperties.STYLE, focusableStyle );
|
||||
}
|
||||
|
||||
private void initComponents() {
|
||||
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
||||
JLabel label9 = new JLabel();
|
||||
JLabel label7 = new JLabel();
|
||||
JTextField textField1 = new JTextField();
|
||||
JLabel label1 = new JLabel();
|
||||
toolBar1 = new JToolBar();
|
||||
JButton button1 = new JButton();
|
||||
JButton button2 = new JButton();
|
||||
JLabel label11 = new JLabel();
|
||||
JButton button3 = new JButton();
|
||||
JButton button4 = new JButton();
|
||||
JLabel label3 = new JLabel();
|
||||
toolBar2 = new JToolBar();
|
||||
JButton button5 = new JButton();
|
||||
JButton button6 = new JButton();
|
||||
JButton button7 = new JButton();
|
||||
JButton button8 = new JButton();
|
||||
JLabel label2 = new JLabel();
|
||||
toolBar3 = new JToolBar();
|
||||
JButton button9 = new JButton();
|
||||
JButton button10 = new JButton();
|
||||
JLabel label10 = new JLabel();
|
||||
JButton button11 = new JButton();
|
||||
JButton button12 = new JButton();
|
||||
JLabel label4 = new JLabel();
|
||||
toolBar4 = new JToolBar();
|
||||
JButton button13 = new JButton();
|
||||
JButton button14 = new JButton();
|
||||
JButton button15 = new JButton();
|
||||
JButton button16 = new JButton();
|
||||
JLabel label8 = new JLabel();
|
||||
JTextField textField2 = new JTextField();
|
||||
JLabel label5 = new JLabel();
|
||||
toolBar5 = new JToolBar();
|
||||
JButton button17 = new JButton();
|
||||
JButton button18 = new JButton();
|
||||
JButton button19 = new JButton();
|
||||
JComboBox<String> comboBox1 = new JComboBox<>();
|
||||
JButton button20 = new JButton();
|
||||
JButton button33 = new JButton();
|
||||
JButton button34 = new JButton();
|
||||
JComboBox<String> comboBox8 = new JComboBox<>();
|
||||
JButton button41 = new JButton();
|
||||
JButton button42 = new JButton();
|
||||
JButton button43 = new JButton();
|
||||
toolBar6 = new JToolBar();
|
||||
JButton button21 = new JButton();
|
||||
JButton button22 = new JButton();
|
||||
JButton button23 = new JButton();
|
||||
JComboBox<String> comboBox2 = new JComboBox<>();
|
||||
JComboBox<String> comboBox3 = new JComboBox<>();
|
||||
JComboBox<String> comboBox7 = new JComboBox<>();
|
||||
JButton button24 = new JButton();
|
||||
JComboBox<String> comboBox10 = new JComboBox<>();
|
||||
JTextField textField3 = new JTextField();
|
||||
JButton button37 = new JButton();
|
||||
JButton button38 = new JButton();
|
||||
JButton button44 = new JButton();
|
||||
JButton button45 = new JButton();
|
||||
JButton button46 = new JButton();
|
||||
JLabel label6 = new JLabel();
|
||||
toolBar7 = new JToolBar();
|
||||
JButton button25 = new JButton();
|
||||
JButton button26 = new JButton();
|
||||
JButton button27 = new JButton();
|
||||
JComboBox<String> comboBox4 = new JComboBox<>();
|
||||
JButton button28 = new JButton();
|
||||
JButton button35 = new JButton();
|
||||
JButton button36 = new JButton();
|
||||
JComboBox<String> comboBox9 = new JComboBox<>();
|
||||
JButton button47 = new JButton();
|
||||
JButton button48 = new JButton();
|
||||
JButton button49 = new JButton();
|
||||
toolBar8 = new JToolBar();
|
||||
JButton button29 = new JButton();
|
||||
JButton button30 = new JButton();
|
||||
JButton button31 = new JButton();
|
||||
JComboBox<String> comboBox5 = new JComboBox<>();
|
||||
JComboBox<String> comboBox6 = new JComboBox<>();
|
||||
JComboBox<String> comboBox13 = new JComboBox<>();
|
||||
JButton button32 = new JButton();
|
||||
JButton button39 = new JButton();
|
||||
JButton button40 = new JButton();
|
||||
JComboBox<String> comboBox12 = new JComboBox<>();
|
||||
JTextField textField4 = new JTextField();
|
||||
JButton button50 = new JButton();
|
||||
JButton button51 = new JButton();
|
||||
JButton button52 = new JButton();
|
||||
|
||||
//======== this ========
|
||||
setLayout(new MigLayout(
|
||||
"insets dialog,hidemode 3",
|
||||
// columns
|
||||
"[fill]" +
|
||||
"[fill]para" +
|
||||
"[fill]" +
|
||||
"[fill]",
|
||||
// rows
|
||||
"[]para" +
|
||||
"[]" +
|
||||
"[]" +
|
||||
"[]" +
|
||||
"[]" +
|
||||
"[]" +
|
||||
"[]" +
|
||||
"[]" +
|
||||
"[]"));
|
||||
|
||||
//---- label9 ----
|
||||
label9.setText("Use to test focus traversal. Tab key skips buttons within one toolbar. Arrow keys focus next/previous button.");
|
||||
add(label9, "cell 0 0 4 1");
|
||||
|
||||
//---- label7 ----
|
||||
label7.setText("Text field:");
|
||||
add(label7, "cell 0 1");
|
||||
add(textField1, "cell 1 1");
|
||||
|
||||
//---- label1 ----
|
||||
label1.setText("Only buttons / not focusable:");
|
||||
add(label1, "cell 0 2");
|
||||
|
||||
//======== toolBar1 ========
|
||||
{
|
||||
|
||||
//---- button1 ----
|
||||
button1.setText("A");
|
||||
toolBar1.add(button1);
|
||||
|
||||
//---- button2 ----
|
||||
button2.setText("B");
|
||||
toolBar1.add(button2);
|
||||
|
||||
//---- label11 ----
|
||||
label11.setText("label");
|
||||
toolBar1.add(label11);
|
||||
|
||||
//---- button3 ----
|
||||
button3.setText("C");
|
||||
toolBar1.add(button3);
|
||||
|
||||
//---- button4 ----
|
||||
button4.setText("D");
|
||||
toolBar1.add(button4);
|
||||
}
|
||||
add(toolBar1, "cell 1 2");
|
||||
|
||||
//---- label3 ----
|
||||
label3.setText("2nd:");
|
||||
add(label3, "cell 2 2");
|
||||
|
||||
//======== toolBar2 ========
|
||||
{
|
||||
|
||||
//---- button5 ----
|
||||
button5.setText("A");
|
||||
toolBar2.add(button5);
|
||||
|
||||
//---- button6 ----
|
||||
button6.setText("B");
|
||||
toolBar2.add(button6);
|
||||
toolBar2.addSeparator();
|
||||
|
||||
//---- button7 ----
|
||||
button7.setText("C");
|
||||
toolBar2.add(button7);
|
||||
|
||||
//---- button8 ----
|
||||
button8.setText("D");
|
||||
toolBar2.add(button8);
|
||||
}
|
||||
add(toolBar2, "cell 3 2,alignx left,growx 0");
|
||||
|
||||
//---- label2 ----
|
||||
label2.setText("Only buttons / focusable:");
|
||||
add(label2, "cell 0 3");
|
||||
|
||||
//======== toolBar3 ========
|
||||
{
|
||||
|
||||
//---- button9 ----
|
||||
button9.setText("A");
|
||||
toolBar3.add(button9);
|
||||
|
||||
//---- button10 ----
|
||||
button10.setText("B");
|
||||
toolBar3.add(button10);
|
||||
|
||||
//---- label10 ----
|
||||
label10.setText("label");
|
||||
toolBar3.add(label10);
|
||||
|
||||
//---- button11 ----
|
||||
button11.setText("C");
|
||||
toolBar3.add(button11);
|
||||
|
||||
//---- button12 ----
|
||||
button12.setText("D");
|
||||
toolBar3.add(button12);
|
||||
}
|
||||
add(toolBar3, "cell 1 3");
|
||||
|
||||
//---- label4 ----
|
||||
label4.setText("2nd:");
|
||||
add(label4, "cell 2 3");
|
||||
|
||||
//======== toolBar4 ========
|
||||
{
|
||||
|
||||
//---- button13 ----
|
||||
button13.setText("A");
|
||||
toolBar4.add(button13);
|
||||
|
||||
//---- button14 ----
|
||||
button14.setText("B");
|
||||
toolBar4.add(button14);
|
||||
toolBar4.addSeparator();
|
||||
|
||||
//---- button15 ----
|
||||
button15.setText("C");
|
||||
toolBar4.add(button15);
|
||||
|
||||
//---- button16 ----
|
||||
button16.setText("D");
|
||||
toolBar4.add(button16);
|
||||
}
|
||||
add(toolBar4, "cell 3 3,alignx left,growx 0");
|
||||
|
||||
//---- label8 ----
|
||||
label8.setText("Text field:");
|
||||
add(label8, "cell 0 4");
|
||||
add(textField2, "cell 1 4");
|
||||
|
||||
//---- label5 ----
|
||||
label5.setText("Combo boxes / not focusable:");
|
||||
add(label5, "cell 0 5");
|
||||
|
||||
//======== toolBar5 ========
|
||||
{
|
||||
|
||||
//---- button17 ----
|
||||
button17.setText("A");
|
||||
toolBar5.add(button17);
|
||||
|
||||
//---- button18 ----
|
||||
button18.setText("B");
|
||||
toolBar5.add(button18);
|
||||
|
||||
//---- button19 ----
|
||||
button19.setText("C");
|
||||
toolBar5.add(button19);
|
||||
|
||||
//---- comboBox1 ----
|
||||
comboBox1.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"read-only"
|
||||
}));
|
||||
toolBar5.add(comboBox1);
|
||||
|
||||
//---- button20 ----
|
||||
button20.setText("D");
|
||||
toolBar5.add(button20);
|
||||
|
||||
//---- button33 ----
|
||||
button33.setText("E");
|
||||
toolBar5.add(button33);
|
||||
|
||||
//---- button34 ----
|
||||
button34.setText("F");
|
||||
toolBar5.add(button34);
|
||||
|
||||
//---- comboBox8 ----
|
||||
comboBox8.setEditable(true);
|
||||
comboBox8.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"editable"
|
||||
}));
|
||||
toolBar5.add(comboBox8);
|
||||
|
||||
//---- button41 ----
|
||||
button41.setText("G");
|
||||
toolBar5.add(button41);
|
||||
|
||||
//---- button42 ----
|
||||
button42.setText("H");
|
||||
toolBar5.add(button42);
|
||||
|
||||
//---- button43 ----
|
||||
button43.setText("I");
|
||||
toolBar5.add(button43);
|
||||
}
|
||||
add(toolBar5, "cell 1 5 3 1,alignx left,growx 0");
|
||||
|
||||
//======== toolBar6 ========
|
||||
{
|
||||
|
||||
//---- button21 ----
|
||||
button21.setText("A");
|
||||
toolBar6.add(button21);
|
||||
|
||||
//---- button22 ----
|
||||
button22.setText("B");
|
||||
toolBar6.add(button22);
|
||||
|
||||
//---- button23 ----
|
||||
button23.setText("C");
|
||||
toolBar6.add(button23);
|
||||
|
||||
//---- comboBox2 ----
|
||||
comboBox2.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"read-only"
|
||||
}));
|
||||
toolBar6.add(comboBox2);
|
||||
|
||||
//---- comboBox3 ----
|
||||
comboBox3.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"read-only"
|
||||
}));
|
||||
toolBar6.add(comboBox3);
|
||||
|
||||
//---- comboBox7 ----
|
||||
comboBox7.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"read-only"
|
||||
}));
|
||||
toolBar6.add(comboBox7);
|
||||
|
||||
//---- button24 ----
|
||||
button24.setText("D");
|
||||
toolBar6.add(button24);
|
||||
|
||||
//---- comboBox10 ----
|
||||
comboBox10.setEditable(true);
|
||||
comboBox10.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"editable"
|
||||
}));
|
||||
toolBar6.add(comboBox10);
|
||||
|
||||
//---- textField3 ----
|
||||
textField3.setText("text field");
|
||||
toolBar6.add(textField3);
|
||||
|
||||
//---- button37 ----
|
||||
button37.setText("E");
|
||||
toolBar6.add(button37);
|
||||
|
||||
//---- button38 ----
|
||||
button38.setText("F");
|
||||
toolBar6.add(button38);
|
||||
|
||||
//---- button44 ----
|
||||
button44.setText("G");
|
||||
toolBar6.add(button44);
|
||||
|
||||
//---- button45 ----
|
||||
button45.setText("H");
|
||||
toolBar6.add(button45);
|
||||
|
||||
//---- button46 ----
|
||||
button46.setText("I");
|
||||
toolBar6.add(button46);
|
||||
}
|
||||
add(toolBar6, "cell 1 6 3 1,alignx left,growx 0");
|
||||
|
||||
//---- label6 ----
|
||||
label6.setText("Combo boxes / focusable:");
|
||||
add(label6, "cell 0 7");
|
||||
|
||||
//======== toolBar7 ========
|
||||
{
|
||||
|
||||
//---- button25 ----
|
||||
button25.setText("A");
|
||||
toolBar7.add(button25);
|
||||
|
||||
//---- button26 ----
|
||||
button26.setText("B");
|
||||
toolBar7.add(button26);
|
||||
|
||||
//---- button27 ----
|
||||
button27.setText("C");
|
||||
toolBar7.add(button27);
|
||||
|
||||
//---- comboBox4 ----
|
||||
comboBox4.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"read-only"
|
||||
}));
|
||||
toolBar7.add(comboBox4);
|
||||
|
||||
//---- button28 ----
|
||||
button28.setText("D");
|
||||
toolBar7.add(button28);
|
||||
|
||||
//---- button35 ----
|
||||
button35.setText("E");
|
||||
toolBar7.add(button35);
|
||||
|
||||
//---- button36 ----
|
||||
button36.setText("F");
|
||||
toolBar7.add(button36);
|
||||
|
||||
//---- comboBox9 ----
|
||||
comboBox9.setEditable(true);
|
||||
comboBox9.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"editable"
|
||||
}));
|
||||
toolBar7.add(comboBox9);
|
||||
|
||||
//---- button47 ----
|
||||
button47.setText("G");
|
||||
toolBar7.add(button47);
|
||||
|
||||
//---- button48 ----
|
||||
button48.setText("H");
|
||||
toolBar7.add(button48);
|
||||
|
||||
//---- button49 ----
|
||||
button49.setText("I");
|
||||
toolBar7.add(button49);
|
||||
}
|
||||
add(toolBar7, "cell 1 7 3 1,alignx left,growx 0");
|
||||
|
||||
//======== toolBar8 ========
|
||||
{
|
||||
|
||||
//---- button29 ----
|
||||
button29.setText("A");
|
||||
toolBar8.add(button29);
|
||||
|
||||
//---- button30 ----
|
||||
button30.setText("B");
|
||||
toolBar8.add(button30);
|
||||
|
||||
//---- button31 ----
|
||||
button31.setText("C");
|
||||
toolBar8.add(button31);
|
||||
|
||||
//---- comboBox5 ----
|
||||
comboBox5.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"read-only"
|
||||
}));
|
||||
toolBar8.add(comboBox5);
|
||||
|
||||
//---- comboBox6 ----
|
||||
comboBox6.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"read-only"
|
||||
}));
|
||||
toolBar8.add(comboBox6);
|
||||
|
||||
//---- comboBox13 ----
|
||||
comboBox13.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"read-only"
|
||||
}));
|
||||
toolBar8.add(comboBox13);
|
||||
|
||||
//---- button32 ----
|
||||
button32.setText("D");
|
||||
toolBar8.add(button32);
|
||||
|
||||
//---- button39 ----
|
||||
button39.setText("E");
|
||||
toolBar8.add(button39);
|
||||
|
||||
//---- button40 ----
|
||||
button40.setText("F");
|
||||
toolBar8.add(button40);
|
||||
|
||||
//---- comboBox12 ----
|
||||
comboBox12.setEditable(true);
|
||||
comboBox12.setModel(new DefaultComboBoxModel<>(new String[] {
|
||||
"editable"
|
||||
}));
|
||||
toolBar8.add(comboBox12);
|
||||
|
||||
//---- textField4 ----
|
||||
textField4.setText("text field");
|
||||
toolBar8.add(textField4);
|
||||
|
||||
//---- button50 ----
|
||||
button50.setText("G");
|
||||
toolBar8.add(button50);
|
||||
|
||||
//---- button51 ----
|
||||
button51.setText("H");
|
||||
toolBar8.add(button51);
|
||||
|
||||
//---- button52 ----
|
||||
button52.setText("I");
|
||||
toolBar8.add(button52);
|
||||
}
|
||||
add(toolBar8, "cell 1 8 3 1,alignx left,growx 0");
|
||||
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||
}
|
||||
|
||||
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||
private JToolBar toolBar1;
|
||||
private JToolBar toolBar2;
|
||||
private JToolBar toolBar3;
|
||||
private JToolBar toolBar4;
|
||||
private JToolBar toolBar5;
|
||||
private JToolBar toolBar6;
|
||||
private JToolBar toolBar7;
|
||||
private JToolBar toolBar8;
|
||||
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||
}
|
||||
@@ -0,0 +1,466 @@
|
||||
JFDML JFormDesigner: "7.0.5.0.382" Java: "16" encoding: "UTF-8"
|
||||
|
||||
new FormModel {
|
||||
contentType: "form/swing"
|
||||
root: new FormRoot {
|
||||
auxiliary() {
|
||||
"JavaCodeGenerator.defaultVariableLocal": true
|
||||
}
|
||||
add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
||||
"$layoutConstraints": "insets dialog,hidemode 3"
|
||||
"$columnConstraints": "[fill][fill]para[fill][fill]"
|
||||
"$rowConstraints": "[]para[][][][][][][][]"
|
||||
} ) {
|
||||
name: "this"
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label9"
|
||||
"text": "Use to test focus traversal. Tab key skips buttons within one toolbar. Arrow keys focus next/previous button."
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 0 4 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label7"
|
||||
"text": "Text field:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "textField1"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label1"
|
||||
"text": "Only buttons / not focusable:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 2"
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
|
||||
name: "toolBar1"
|
||||
auxiliary() {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button1"
|
||||
"text": "A"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button2"
|
||||
"text": "B"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label11"
|
||||
"text": "label"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button3"
|
||||
"text": "C"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button4"
|
||||
"text": "D"
|
||||
} )
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 2"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label3"
|
||||
"text": "2nd:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 2 2"
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
|
||||
name: "toolBar2"
|
||||
auxiliary() {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button5"
|
||||
"text": "A"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button6"
|
||||
"text": "B"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JToolBar$Separator" ) {
|
||||
name: "separator2"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button7"
|
||||
"text": "C"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button8"
|
||||
"text": "D"
|
||||
} )
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 3 2,alignx left,growx 0"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label2"
|
||||
"text": "Only buttons / focusable:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 3"
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
|
||||
name: "toolBar3"
|
||||
auxiliary() {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button9"
|
||||
"text": "A"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button10"
|
||||
"text": "B"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label10"
|
||||
"text": "label"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button11"
|
||||
"text": "C"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button12"
|
||||
"text": "D"
|
||||
} )
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 3"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label4"
|
||||
"text": "2nd:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 2 3"
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
|
||||
name: "toolBar4"
|
||||
auxiliary() {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button13"
|
||||
"text": "A"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button14"
|
||||
"text": "B"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JToolBar$Separator" ) {
|
||||
name: "separator1"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button15"
|
||||
"text": "C"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button16"
|
||||
"text": "D"
|
||||
} )
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 3 3,alignx left,growx 0"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label8"
|
||||
"text": "Text field:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 4"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "textField2"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 4"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label5"
|
||||
"text": "Combo boxes / not focusable:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 5"
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
|
||||
name: "toolBar5"
|
||||
auxiliary() {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button17"
|
||||
"text": "A"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button18"
|
||||
"text": "B"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button19"
|
||||
"text": "C"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox1"
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "read-only"
|
||||
addElement( "read-only" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button20"
|
||||
"text": "D"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button33"
|
||||
"text": "E"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button34"
|
||||
"text": "F"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox8"
|
||||
"editable": true
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "editable"
|
||||
addElement( "editable" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button41"
|
||||
"text": "G"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button42"
|
||||
"text": "H"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button43"
|
||||
"text": "I"
|
||||
} )
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 5 3 1,alignx left,growx 0"
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
|
||||
name: "toolBar6"
|
||||
auxiliary() {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button21"
|
||||
"text": "A"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button22"
|
||||
"text": "B"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button23"
|
||||
"text": "C"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox2"
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "read-only"
|
||||
addElement( "read-only" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox3"
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "read-only"
|
||||
addElement( "read-only" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox7"
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "read-only"
|
||||
addElement( "read-only" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button24"
|
||||
"text": "D"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox10"
|
||||
"editable": true
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "editable"
|
||||
addElement( "editable" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "textField3"
|
||||
"text": "text field"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button37"
|
||||
"text": "E"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button38"
|
||||
"text": "F"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button44"
|
||||
"text": "G"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button45"
|
||||
"text": "H"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button46"
|
||||
"text": "I"
|
||||
} )
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 6 3 1,alignx left,growx 0"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||
name: "label6"
|
||||
"text": "Combo boxes / focusable:"
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 0 7"
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
|
||||
name: "toolBar7"
|
||||
auxiliary() {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button25"
|
||||
"text": "A"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button26"
|
||||
"text": "B"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button27"
|
||||
"text": "C"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox4"
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "read-only"
|
||||
addElement( "read-only" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button28"
|
||||
"text": "D"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button35"
|
||||
"text": "E"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button36"
|
||||
"text": "F"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox9"
|
||||
"editable": true
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "editable"
|
||||
addElement( "editable" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button47"
|
||||
"text": "G"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button48"
|
||||
"text": "H"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button49"
|
||||
"text": "I"
|
||||
} )
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 7 3 1,alignx left,growx 0"
|
||||
} )
|
||||
add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
|
||||
name: "toolBar8"
|
||||
auxiliary() {
|
||||
"JavaCodeGenerator.variableLocal": false
|
||||
}
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button29"
|
||||
"text": "A"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button30"
|
||||
"text": "B"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button31"
|
||||
"text": "C"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox5"
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "read-only"
|
||||
addElement( "read-only" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox6"
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "read-only"
|
||||
addElement( "read-only" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox13"
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "read-only"
|
||||
addElement( "read-only" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button32"
|
||||
"text": "D"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button39"
|
||||
"text": "E"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button40"
|
||||
"text": "F"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JComboBox" ) {
|
||||
name: "comboBox12"
|
||||
"editable": true
|
||||
"model": new javax.swing.DefaultComboBoxModel {
|
||||
selectedItem: "editable"
|
||||
addElement( "editable" )
|
||||
}
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JTextField" ) {
|
||||
name: "textField4"
|
||||
"text": "text field"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button50"
|
||||
"text": "G"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button51"
|
||||
"text": "H"
|
||||
} )
|
||||
add( new FormComponent( "javax.swing.JButton" ) {
|
||||
name: "button52"
|
||||
"text": "I"
|
||||
} )
|
||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||
"value": "cell 1 8 3 1,alignx left,growx 0"
|
||||
} )
|
||||
}, new FormLayoutConstraints( null ) {
|
||||
"location": new java.awt.Point( 0, 0 )
|
||||
"size": new java.awt.Dimension( 780, 350 )
|
||||
} )
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user