📄 fontdialog.java
字号:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
public class FontDialog extends JDialog implements ListSelectionListener
{
private Container pane;
private JTextArea text;
private Font selectedFont;
private static int i = 75, j = 0, k = 7;
private String fontNames[] =
GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
private String styleNames[] = { "常规", "粗体", "斜体", "粗斜体" };
private int styleIntNames[] = { Font.PLAIN, Font.BOLD, Font.ITALIC, Font.BOLD + Font.ITALIC };
private String sizeNames[] = { "8", "9", "10", "11", "12", "14", "16", "18", "20",
"22", "24", "26", "28", "36", "48", "72" };
private JLabel fontLabel, styleLabel, sizeLabel;
private JTextField fontText, styleText, sizeText,demoText;
private JList fontList, styleList, sizeList;
private JButton confirm, cancel;
private JFrame owner;
private JPanel demoPanel;
public FontDialog( JFrame frame, JTextArea textArea )
{
super( frame, "字体" );
owner = frame;
frame.setEnabled( false );
text = textArea;
pane = getContentPane();
pane.setLayout( null );
fontLabel = new JLabel( "字体" );
fontLabel.setBounds(19, 8, 114, 27);
pane.add( fontLabel );
styleLabel = new JLabel( "字形" );
styleLabel.setBounds(160, 9, 73, 26);
pane.add( styleLabel );
sizeLabel = new JLabel( "大小" );
sizeLabel.setBounds(260, 8, 43, 27);
pane.add( sizeLabel );
fontText = new JTextField();
fontText.setText( fontNames[i] );
fontText.setFocusable( false );
fontText.setBounds(19, 33, 114, 27);
pane.add( fontText );
styleText = new JTextField();
styleText.setText( styleNames[j] );
styleText.setFocusable( false );
styleText.setBounds(160, 33, 73, 27);
pane.add( styleText );
sizeText = new JTextField();
sizeText.setText( sizeNames[k] );
sizeText.setFocusable( false );
sizeText.setBounds(260, 33, 43, 27);
pane.add( sizeText );
fontList = new JList( fontNames );
fontList.setSelectedIndex( i );
fontList.addListSelectionListener( this );
fontList.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
JScrollPane fontPane = new JScrollPane( fontList );
fontPane.setBounds(19, 61, 114, 113);
pane.add( fontPane );
fontList.ensureIndexIsVisible( i );
styleList = new JList( styleNames );
styleList.setSelectedIndex( j );
styleList.addListSelectionListener( this );
styleList.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
JScrollPane stylePane = new JScrollPane( styleList );
stylePane.setBounds(160, 61, 73, 113);
pane.add( stylePane );
styleList.ensureIndexIsVisible( j );
sizeList = new JList( sizeNames );
sizeList.setSelectedIndex( k );
sizeList.addListSelectionListener( this );
sizeList.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
JScrollPane sizePane = new JScrollPane( sizeList );
sizePane.setBounds(260, 61, 43, 113);
pane.add( sizePane );
sizeList.ensureIndexIsVisible( k );
confirm = new JButton( "确定" );
confirm.setBounds(331, 34, 73, 25);
confirm.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent e )
{
i = fontList.getSelectedIndex();
j = styleList.getSelectedIndex();
k = sizeList.getSelectedIndex();
text.setFont( selectedFont );
FontDialog.this.dispose();
owner.setEnabled( true );
owner.setVisible( true );
}
}
);
pane.add( confirm );
cancel = new JButton( "取消" );
cancel.setBounds(331, 73, 73, 25);
cancel.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent e )
{
FontDialog.this.dispose();
owner.setEnabled( true );
owner.setVisible( true );
}
}
);
pane.add( cancel );
TitledBorder tb = new TitledBorder( BorderFactory.createLineBorder( Color.BLACK ), "示例" );
demoPanel = new JPanel();
demoPanel.setBorder( tb );
demoPanel.setBounds( 78, 175, 226, 88 );
demoPanel.setLayout( null );
demoText = new JTextField("记事本ABC");
selectedFont = new Font( fontNames[i], styleIntNames[j], Integer.parseInt( sizeNames[k] ) );
demoText.setFont( selectedFont );
demoText.setFocusable( false );
demoText.setHorizontalAlignment( JTextField.CENTER );
demoText.setBounds(15, 20, 198, 55 );
demoPanel.add( demoText );
pane.add( demoPanel );
setSize(430, 300);
setResizable( false );
int x = ( int )( owner.getLocation().getX() + owner.getWidth() / 2 -215 );
x = ( x > 600 ? 600 : x );
x = ( x < 0 ? 0 : x );
int y = ( int )( owner.getLocation().getY() + owner.getHeight() / 2 - 150 );
y = ( y > 448 ? 448 : y );
y = ( y < 0 ? 0 : y );
setLocation( x, y );
setVisible(true);
addWindowListener(
new WindowAdapter()
{
public void windowClosing( WindowEvent e )
{
FontDialog.this.dispose();
owner.setEnabled( true );
owner.setVisible( true );
}
}
);
}
public void valueChanged( ListSelectionEvent e )
{
fontText.setText( fontList.getSelectedValue().toString() );
selectedFont = new Font( fontNames[fontList.getSelectedIndex()],
styleIntNames[styleList.getSelectedIndex()],
Integer.parseInt( sizeNames[sizeList.getSelectedIndex()] ) );
demoText.setFont( selectedFont );
demoText.updateUI();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -