我正在尝试用java制作一个类似记事本的应用程序。
像这样:
我想把零件放在有行号的一边( JTextArea
)还有文本部分( JTextPane
)我想给它们加上滚动条。这是我现在的节目。
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(-7, -1, 550, 400);
contentPane = new JPanel();
contentPane.setBounds(-7, -1, 550, 400);
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel Pane=new JPanel();
Pane.setLayout(null);
JTextPane txtp = new JTextPane();
txtp.setFont(new Font("Segoe UI", Font.PLAIN, 11));
txtp.setBounds(22, 0, 413, 250);
Pane.add(txtp);
JTextArea header = new JTextArea();
header.setBounds(0, 0, 20, 250);
Pane.add(header);
JScrollPane txt=new JScrollPane(Pane);
txt.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
txt.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
txt.setBounds(0, 0, 437, 250);
txt.getVerticalScrollBar().setOpaque(false);
txt.getHorizontalScrollBar().setOpaque(false);
contentPane.add(txt);
count = new JTextField();
count.setText("Word Count: 0, Character Count: 0");
count.setFont(new Font("Segoe UI", Font.PLAIN, 9));
count.setBounds(0, 250, 439, 13);
contentPane.add(count);
count.setColumns(10);
任何帮助都会得到感谢。
1条答案
按热度按时间kmynzznz1#
我创造了一个
JFrame
用一个JTextPane
和一个JTextArea
.如您所见,有行号、文本区域和滚动条。
下面是我创建这个gui的步骤。
我通过调用
SwingUtilities
invokeLater
方法。此方法确保在事件调度线程上创建和执行swing组件。我使用swing布局管理器。这是至关重要的。如果不使用布局管理器,就无法构建复杂的swing gui。不可能。不可思议。
这个
JFrame
有默认值BorderLayout
. 我把主要的JPanel
在中间。创建状态时JPanel
,你可以把它JPanel
在最后一行之后。我创建一个主
JPanel
,行号JPanel
,以及文本区域JPanel
. 几乎任何gui都可以分解为多个JPanels
. 一旦你掌握了窍门,你就会明白JPanels
到处都是。我创建每个
JPanel
用自己的方法。这是关注点的分离。这允许我一次只关注gui的一个部分,并允许我使用不同的swing布局管理器进行实验,看看哪个布局管理器工作得最好。下面是完整的可运行代码。您可以以此作为启动应用程序的基础,一次添加一点点代码,并进行测试。测试,测试,测试。测试是学习如何使用swing布局管理器的唯一方法。
我有没有提到swing布局管理器对于创建gui有多重要?嗯,他们是。