Java图形界面使用JDialog,参照Windows记事本编写一个“字体”对话框。
时间: 2024-05-24 15:14:38 浏览: 94
好的,我可以为您提供一些关于Java图形界面使用JDialog编写“字体”对话框的建议。
首先,您可以创建一个JDialog对象作为对话框窗口,并设置对话框的标题和大小。然后,您可以添加需要的组件,比如标签、下拉列表、单选按钮和按钮等,来完成“字体”对话框的需求。
具体实现中,您可以通过JComboBox组件提供不同的字体、样式和大小等选项。您还可以添加JCheckBox或JRadioButton组件用于一些可选项,比如是否应用粗体或斜体效果等。最后,您可以添加“确定”和“取消”按钮,让用户选择是否确定更改设置。
关于实现细节,您可以参考Java官方文档和一些Java图形界面开发的教程和案例。希望这些提示可以帮助您完成“字体”对话框的开发!
相关问题
使用JDialog,参照Windows记事本编写一个“字体”对话框
好的,我可以通过以下代码实现:
```
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class FontDialog extends JDialog implements ActionListener, ListSelectionListener {
private static final long serialVersionUID = 1L;
private JTextField tfFont;
private JTextField tfSize;
private JList<String> listFontNames;
private JList<Integer> listSizes;
private JButton btnOK;
private JButton btnCancel;
private Font selectedFont;
public FontDialog(JFrame parentFrame) {
super(parentFrame, "Font", true);
setResizable(false);
setSize(400, 300);
setLocationRelativeTo(parentFrame);
JPanel panelMain = new JPanel();
panelMain.setLayout(new BorderLayout(10, 10));
JPanel panelFont = new JPanel(new GridLayout(2, 2, 10, 10));
JPanel panelSize = new JPanel();
tfFont = new JTextField("Arial", 20);
tfSize = new JTextField("12", 5);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontNames = ge.getAvailableFontFamilyNames();
listFontNames = new JList<String>(fontNames);
listFontNames.setSelectedValue("Arial", true);
listFontNames.addListSelectionListener(this);
Integer[] sizes = { 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72 };
listSizes = new JList<Integer>(sizes);
listSizes.setSelectedValue(12, true);
listSizes.addListSelectionListener(this);
JScrollPane scrollFontNames = new JScrollPane(listFontNames);
JScrollPane scrollSizes = new JScrollPane(listSizes);
scrollFontNames.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollSizes.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panelFont.add(new JLabel("Font: "));
panelFont.add(tfFont);
panelFont.add(new JLabel("Size: "));
panelFont.add(tfSize);
panelSize.setLayout(new BorderLayout());
panelSize.add(new JLabel("Size: "), BorderLayout.NORTH);
panelSize.add(scrollSizes, BorderLayout.CENTER);
panelMain.add(panelFont, BorderLayout.NORTH);
panelMain.add(scrollFontNames, BorderLayout.CENTER);
panelMain.add(panelSize, BorderLayout.EAST);
JPanel panelButtons = new JPanel();
btnOK = new JButton("OK");
btnCancel = new JButton("Cancel");
btnOK.addActionListener(this);
btnCancel.addActionListener(this);
panelButtons.add(btnOK);
panelButtons.add(btnCancel);
panelMain.add(panelButtons, BorderLayout.SOUTH);
setContentPane(panelMain);
}
public Font showDialog() {
setVisible(true);
return selectedFont;
}
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == btnOK) {
String fontName = tfFont.getText();
int size = Integer.parseInt(tfSize.getText());
selectedFont = new Font(fontName, Font.PLAIN, size);
dispose();
} else if (source == btnCancel) {
selectedFont = null;
dispose();
}
}
public void valueChanged(ListSelectionEvent e) {
Object source = e.getSource();
if (!e.getValueIsAdjusting()) {
if (source == listFontNames) {
String fontName = listFontNames.getSelectedValue();
tfFont.setText(fontName);
tfFont.setFont(new Font(fontName, Font.PLAIN, 12));
} else if (source == listSizes) {
Integer size = listSizes.getSelectedValue();
tfSize.setText(size.toString());
tfSize.setFont(new Font(tfSize.getFont().getFamily(), Font.PLAIN, size));
}
}
}
}
```
然后在主程序中调用该对话框即可:
```
import javax.swing.*;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("Sample");
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
FontDialog fontDialog = new FontDialog(frame);
Font font = fontDialog.showDialog();
if (font != null) {
JOptionPane.showMessageDialog(frame, "Selected font: " + font.getName() + " " + font.getSize());
// Do something with selected font
}
}
}
```
这样就可以弹出一个“字体”对话框,用户可以选择想要的字体和字号。
使用JDialog,参照Windows记事本编写一个“字体”对话框
呼叫字体对话框的代码:
```
JTextArea textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
JButton btnFont = new JButton("字体...");
btnFont.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFontChooser fontChooser = new JFontChooser();
if (fontChooser.showDialog(frame) == JFontChooser.OK_OPTION) {
Font font = fontChooser.getSelectedFont();
textArea.setFont(font);
}
}
});
frame.add(scrollPane, BorderLayout.CENTER);
frame.add(btnFont, BorderLayout.NORTH);
```
需要导入的包:
```
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import com.liaowei.gui.JFontChooser;
```
这里使用了一个开源的字体选择器JFontChooser,需要去网上下载并导入到项目中。
阅读全文