在JavaSwing中,有没有任何方法可以在没有JLabel或JTextField的情况下显示文本?
我正在创建Swing项目,但我想知道是否有任何方法可以在不使用在JavaSwing中,有没有任何方法可以在没有JLabel或JTextField的情况下显示文本?,java,swing,jtextfield,Java,Swing,Jtextfield,我正在创建Swing项目,但我想知道是否有任何方法可以在不使用JLabel或JTextField的情况下打印文本 我发现文本字段可能是一个,但它不像JLabel那样整洁。(文本周围有一个边框) 是否可以删除文本字段中的边框?或者我可以使用其他方法吗?您似乎在寻找。然而,有很多方法可以达到你想要的效果 不透明JLabel带有背景色 自定义绘制的组件 下面是两个标准组件的示例 import java.awt.*; import javax.swing.*; class TextFieldNoBor
JLabel
或JTextField
的情况下打印文本
我发现文本字段可能是一个,但它不像JLabel
那样整洁。(文本周围有一个边框)
是否可以删除文本字段中的边框?或者我可以使用其他方法吗?您似乎在寻找。然而,有很多方法可以达到你想要的效果
JLabel
带有背景色import java.awt.*;
import javax.swing.*;
class TextFieldNoBorder {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
String s = "Text without borders..";
JPanel gui = new JPanel(new GridLayout(0,1,5,5));
JTextField tf = new JTextField(s, 20);
tf.setBorder(null);
gui.add(tf);
JLabel l = new JLabel(s);
l.setOpaque(true);
l.setBackground(Color.YELLOW);
gui.add(l);
JOptionPane.showMessageDialog(null, gui);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency
SwingUtilities.invokeLater(r);
}
}
“我想知道是否有任何方法可以在不使用JLable或JtextField的情况下打印文本”
你可以用JPanel来画文本。需要做更多的工作,但你可以做更多的文字
public class TextPanel extends JPanel{
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawString("Hello, Stackoverflow!", xLocation, yLocation);
}
}
请参见您可以使用此功能
JTextField textField = new JTextField();
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());
这将为您的
文本字段设置空边框
看看这个[如何设置文本字段的样式,使其没有边框?][1][1]:我认为您可以覆盖绘制方法并在组件上绘制它。背景将是透明的,没有边框。我认为这就是您正在寻找的1)如果有任何方法可以在不使用JLable或JtextField的情况下打印文本。
查看所有扩展的组件JTextComponent
2)可以在文本字段中添加边框吗被删除?
是的,这可能是90%的Swing程序员的某种疾病:当他们制作自己的组件时,他们总是扩展JPanel
而不是JComponent
。为什么?似乎有很多“繁重的工作”可以在几行代码中使用标签或文本字段来完成。好吧,OP并没有真正描述他们想要做什么。我只是简单地回答了上面引用的问题:)嗯,我是个新手,所以我的一个朋友给了我一个要完成的任务。我想他是想教我如何“画”一篇文章,而不仅仅是“打印”。谢谢大家:)