Java.awt:未显示第二个TextArea
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java.awt:未显示第二个TextArea,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3489字,纯文字阅读大概需要5分钟。
内容图文
![Java.awt:未显示第二个TextArea](/upload/InfoBanner/zyjiaocheng/680/d6eb50d3c8d243b8aba2d2643d2df46e.jpg)
我正在尝试了解Java.awt的工作方式(我们需要在没有GUI编辑器的情况下创建GUI)
以下代码不显示2 TextAreas:
Frame fr = new Frame("Parser");
Panel buttons = new Panel();
Panel inputText = new Panel();
Panel outputText = new Panel();
String here = new String ("Insert code here...");
TextArea input = new TextArea(here, 9, 96, TextArea.SCROLLBARS_VERTICAL_ONLY);
TextArea output = new TextArea(here, 9,96,TextArea.SCROLLBARS_VERTICAL_ONLY);
public Window(){
fr.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
fr.dispose();
}
}
);
fr.setSize(700, 400);
fr.setLocation(200,100);
fr.setResizable(false);
fr.add(buttons);
fr.add(inputText);
fr.add(outputText);
buttons.setBounds(new Rectangle(0,0,700,60));
buttons.setBackground(new Color(200,200,200));
inputText.setBounds(new Rectangle(0,60,700,170));
inputText.setBackground(new Color(255,255,255));
inputText.add(input);
outputText.setBounds(new Rectangle(0,230,700,170));
outputText.setBackground(new Color(200,200,200));
outputText.add(output);
}
获得的结果:
预期结果:
解决方法:
您的代码不尊重您的容器正在使用的布局管理器.我相信,默认情况下,AWT框架使用BorderLayout(编辑:是的,按照Frame API进行.):
>通常,请避免使用AWT for Swing,它具有更大的功能和灵活性,尽管它也显示了它的年龄,但比AWT的要短.
>阅读并以明智的方式使用布局管理器为您完成繁重的工作.在这里,BoxLayout可以为您提供帮助.
>避免使用空布局.是的,这可以为您提供当前代码的快速简便的修复程序,但会导致创建非常不灵活的GUI,尽管它们在一个平台上看起来可能不错,但在大多数其他平台或屏幕分辨率上却看起来很糟糕,而且很难做到更新和维护.
>避免设置任何组件的边界,大小或位置,然后再次让组件及其容器的布局管理器为您设置大小.
例如:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.*;
public class MyWindow extends JPanel {
private static final int ROWS = 10;
private static final int COLS = 50;
private static final String[] BUTTON_NAMES = { "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday" };
private static final int GAP = 3;
private JTextArea inputTextArea = new JTextArea(ROWS, COLS);
private JTextArea outputTextArea = new JTextArea(ROWS, COLS);
public MyWindow() {
JPanel buttonPanel = new JPanel(new GridLayout(1, 0, GAP, 0));
for (String btnName : BUTTON_NAMES) {
buttonPanel.add(new JButton(btnName));
}
outputTextArea.setFocusable(false);
outputTextArea.setEditable(false);
setBorder(BorderFactory.createEmptyBorder(GAP, GAP, GAP, GAP));
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
add(buttonPanel);
add(putInTitledScrollPane(inputTextArea, "Input Text"));
add(putInTitledScrollPane(outputTextArea, "Output Text"));
}
private JPanel putInTitledScrollPane(JComponent component,
String title) {
JPanel wrapperPanel = new JPanel(new BorderLayout());
wrapperPanel.setBorder(BorderFactory.createTitledBorder(title));
wrapperPanel.add(new JScrollPane(component));
return wrapperPanel;
}
private static void createAndShowGui() {
MyWindow mainPanel = new MyWindow();
JFrame frame = new JFrame("MyWindow");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
显示为:
使用布局管理器可以更轻松地更改或增强GUI.例如,由于我使用COL常量设置了JTextArea的宽度,因此,如果更改COL常量,则整个GUI都会变宽,甚至按钮和按钮JPanel也变宽,因为布局管理器正在处理所有大小调整.使用您的代码,您必须手动更改添加到GUI的每个组件的宽度,这很容易产生错误.
内容总结
以上是互联网集市为您收集整理的Java.awt:未显示第二个TextArea全部内容,希望文章能够帮你解决Java.awt:未显示第二个TextArea所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。