- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白为什么 JScrollpane 不会被添加到 JTextArea,这是因为某种布局问题吗?
这是我 friend 做的一个文本编辑器,他一开始只用AWT做的,后来我用swing的JTextArea替换了AWT TextArea来换行。
输出:
编辑:感谢所有为我投入时间的人。我发现将 JTextArea 添加到 Frame 才是真正的问题,因为它已经添加到了 JScrollPane 中;并且 JScrollPane 已添加到 Frame 中。所以我只是删除了将 JTextArea 添加到框架的行,该行写在我在代码中创建主题的上方。
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
//---------------------------------------
class MyFrame extends JFrame { // creating class name is 'Myframe' extending from 'JFrame' class
MenuBar bar;
Menu menu1, menu2, format_menu, font_size, theme;
MenuItem new_item1, item2, item3, item4, item5, item6, item7, item8;
MenuItem dracula, queen, dawn, light;
MenuItem size_8, size_12, size_16, size_20, size_24, size_28;
JTextArea jTextArea;
String text;
MyFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Untitled - CodePad");
// this is for shortcut keys
MenuShortcut menuShortcut_new_item1 = new MenuShortcut(KeyEvent.VK_N);
MenuShortcut menuShortcut_item2 = new MenuShortcut(KeyEvent.VK_O);
MenuShortcut menuShortcut_item3 = new MenuShortcut(KeyEvent.VK_S);
MenuShortcut menuShortcut_item4 = new MenuShortcut(KeyEvent.VK_X);
MenuShortcut menuShortcut_item5 = new MenuShortcut(KeyEvent.VK_C);
MenuShortcut menuShortcut_item6 = new MenuShortcut(KeyEvent.VK_V);
MenuShortcut menuShortcut_item7 = new MenuShortcut(KeyEvent.VK_T);
MenuShortcut menuShortcut_item8 = new MenuShortcut(KeyEvent.VK_A);
// -------------------------------------------
// setting icon
Image icon = Toolkit.getDefaultToolkit().getImage(".//res//icon.png");
setIconImage(icon);
//
bar = new MenuBar(); // creating object of menubar and giving it reference
menu1 = new Menu("File");// creating object of menu as 'File' and giving it reference
menu2 = new Menu("Edit");// creating object of menu as 'Edit' and giving it reference
format_menu = new Menu("Format");// creating object of menu as 'Format' and giving it reference
font_size = new Menu("Font Size");// creating object of menu as 'Font Size' and giving it reference
theme = new Menu("Theme");// creating object of menu as 'Theme' and giving it reference
//// creating object of MenuItem and giving it reference,and Passing arguments
//// 'label','menushortcut'
new_item1 = new MenuItem("New", menuShortcut_new_item1);
item2 = new MenuItem("Open", menuShortcut_item2);
item3 = new MenuItem("Save", menuShortcut_item3);
item4 = new MenuItem("Exit", menuShortcut_item4);
item5 = new MenuItem("Copy", menuShortcut_item5);
item6 = new MenuItem("Paste", menuShortcut_item6);
item7 = new MenuItem("Cut", menuShortcut_item7);
item8 = new MenuItem("Select All", menuShortcut_item8);
// ------------------done--------------
// creating menuItem for font size menu
size_8 = new MenuItem("8");
size_12 = new MenuItem("12");
size_16 = new MenuItem("16");
size_20 = new MenuItem("20");
size_24 = new MenuItem("24");
size_28 = new MenuItem("28");
// -------------------done-------------------
// creating menuItem for theme menu
dracula = new MenuItem("Dracula");
queen = new MenuItem("Queen");
dawn = new MenuItem("Dawn");
light = new MenuItem("Light");
// creating menuItem for theme menu
// adding new_item1,2,3,4 to menu1 ,that is new,open,save,exit
menu1.add(new_item1);
menu1.add(item2);
menu1.add(item3);
menu1.add(item4);
// ------------------Done-------------------
// adding item5,6,7,8 to menu2 ,that is copy,paste,cut,and select all
menu2.add(item5);
menu2.add(item6);
menu2.add(item7);
menu2.add(item8);
// -------done---------------------------------------------------------
format_menu.add(font_size);// adding font_size menu to format menu so it becomes submenu
// adding MenuItems to font_size menu
font_size.add(size_8);
font_size.add(size_12);
font_size.add(size_16);
font_size.add(size_20);
font_size.add(size_24);
font_size.add(size_28);
// ---------done------------------------
// adding MenuItem to theme Menu-------
theme.add(dracula);
theme.add(queen);
theme.add(dawn);
theme.add(light);
// ---------done------------------------
jTextArea = new JTextArea();// adding jTextArea
jTextArea.setLineWrap(true);
JScrollPane scroll = new JScrollPane(jTextArea, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add(scroll);
// adding menus to bar
bar.add(menu1);
bar.add(menu2);
bar.add(format_menu);
bar.add(theme);
setMenuBar(bar); // settingmenubar as bar
add(jTextArea);// adding text area
// declaring some colors using rgb
Color dracula_Color = new Color(39, 40, 34);
Color green_Color = new Color(166, 226, 41);
Color orange_Color = new Color(219, 84, 34);
Color queen_Color = new Color(174, 129, 219);
// setting default foreground color of jTextArea and setting font
jTextArea.setForeground(Color.BLUE);
jTextArea.setFont(new Font(Font.MONOSPACED, Font.BOLD, 15));
// setting size and location and visibility
setSize(1000, 600);
setLocationRelativeTo(null);
setVisible(true);
item2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
FileDialog dialog = new FileDialog(new Frame(), "Open", FileDialog.LOAD); // this will load the
// fileDialog
dialog.setVisible(true);// this will make dialog visible
String path = dialog.getDirectory() + dialog.getFile(); // this will select the path of selected file
// and put it into 'path'
setTitle(dialog.getFile() + " - CodePad");// this will set Title to selected file name and -CodePad
try {
FileInputStream fi = new FileInputStream(path);
byte b[] = new byte[fi.available()];
fi.read(b);
String str = new String(b); // this will store b in str
jTextArea.setText(str);// this will display text in 'str' in jTextArea
fi.close();// this will close fi
} catch (Exception e) {
System.out.println("Something went Wrong :(");
}
}
});
new_item1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
setTitle("Untitled - CodePad");
jTextArea.setText(" ");
}
});
item3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
FileDialog dialog = new FileDialog(new Frame(), "Save ", FileDialog.SAVE);
dialog.setVisible(true);
String path = dialog.getDirectory() + dialog.getFile();
setTitle(dialog.getFile() + "- CodePad");
try {
FileWriter fw = new FileWriter(path);
fw.write(jTextArea.getText());
fw.close();
} catch (Exception e) {
System.out.println("Something went Wrong :(");
}
}
});
item4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
// setVisible(false);//this will make frame invisible
System.exit(0);
}
});
item5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
text = jTextArea.getSelectedText();// this will store selected text in to variable 'text'
}
});
item6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.insert(text, jTextArea.getCaretPosition()); // this will insert the text present in 'text'
// variable at the carret position
}
});
item7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
text = jTextArea.getSelectedText(); // this will copy the selected text
jTextArea.replaceRange("", jTextArea.getSelectionStart(), jTextArea.getSelectionEnd()); // this will put
// ""
// to selected
// text
}
});
item8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.selectAll(); // this will select all the text in jTextArea
}
});
// ------------------------------------------------------------------------
// --------------------------------------------------------------------------
size_8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.setFont(new Font(Font.MONOSPACED, Font.BOLD, 8)); // this will change the size of text in
// jTextArea to 8
}
});
size_12.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.setFont(new Font(Font.MONOSPACED, Font.BOLD, 12));// this will change the size of text in
// jTextArea to 12
}
});
size_16.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.setFont(new Font(Font.MONOSPACED, Font.BOLD, 16));// this will change the size of text in
// jTextArea to 16
}
});
size_20.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.setFont(new Font(Font.MONOSPACED, Font.BOLD, 20));// this will change the size of text in
// jTextArea to 20
}
});
size_24.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.setFont(new Font(Font.MONOSPACED, Font.BOLD, 24));// this will change the size of text in
// jTextArea to 24
}
});
size_28.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.setFont(new Font(Font.MONOSPACED, Font.BOLD, 28));// this will change the size of text in
// jTextArea to 28
}
});
// --------------------------------------------------------------------------
dracula.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.setBackground(dracula_Color);// this will backgound to dracula
jTextArea.setForeground(green_Color);// this will set foregrounf to green
}
});
queen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.setBackground(dracula_Color);
jTextArea.setForeground(queen_Color);
}
});
dawn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.setBackground(Color.WHITE);
jTextArea.setForeground(orange_Color);
}
});
light.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
jTextArea.setBackground(Color.WHITE);
jTextArea.setForeground(Color.BLUE);
}
});
// --------------------------------------------------------------------------
}
}
// ---------------------------------------
public class CodePad_updated {
public static void main(String[] args) {
new MyFrame();// object
}
}
最佳答案
您是 Swing 新手吗?我没有看到您设置内容 Pane 。我也没有看到您在 actionListeners 中使用 @Override 命令。
正如我发现的一些可疑的事情一样。我通常创建一个新的 JFrame 而不是扩展它。我认为扩展 JFrame 是一种不好的做法。但这并不是普遍的观点。然后,您将向框架添加一个面板并将其设置为 contentPane。然后您可以开始将所有内容添加到面板中,包括其他面板以帮助进行 UI 布局。文本字段是否显示?因为我怀疑事实并非如此。此外,您还需要将 ScrollPane 添加到 contentPane,而不是 Frame。我建议删除帖子中代码中与您的问题无关的所有内容,即与当前主题无关的所有内容。
编辑:您是否尝试过将 textArea 添加到滚动 Pane ?它看起来像这样。
JTextArea text = new JTextArea();
JScrollPane newScroll = new JScrollPane(text);
这对你有帮助吗?
关于java - 为什么 JScrollpane 没有添加到我的文本编辑器中的 JTextArea 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69587782/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!