java中上怎样使字一个一个的写在面板上去

Java如何在JFrame面板上显示背景文字~

Java在JFrame面板上显示背景文字的方法:
主函数:
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
HAPPY frame = new HAPPY();
//frame.setVisible(true); 这行代码,可加可不加,并不会影响最终结果,但是在构造函数中一定要添加;
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
构造函数(关键代码):
JFrame frame=new JFrame("\设\置\背\景\图\片 ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon img = new ImageIcon("src/images/1.jpg");//这是背景图片
JLabel imgLabel = new JLabel(img);//将背景图放在标签里。

frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));//注意这里是关键,将背景标签添加到jfram的 LayeredPane面板里。
imgLabel.setBounds(0,0,img.getIconWidth(), img.getIconHeight());//设置背景标签的位置
Container cp=frame.getContentPane();
cp.setLayout(null); //这里选择绝对布局管理器,对于边界布局管理器,放入控件后,无法显示背景图片;因为将整个面板都填充满了;
((JPanel)cp).setOpaque(false); //这样就能显示出背景图片出来了。
剩下的就是在面板中添加相关的控件,添加语句可以用:
(1)frame.getContentPane().add(panel); (2)cp.add(panel)
效果一样;

另一种方法则是直接为面板设置背景图片,源代码如下:
contentPane = new JPanel(){
private static final long serialVersionUID=-1588458291133087637L;
public void paint(Graphics g){
ImageIcon icon=new ImageIcon("src/images/5.jpg");
Image image=icon.getImage();
g.drawImage(image, 0, 0, null);
}
};
但在实验中发现,显示效果不如前一种方法,不知为何,面板上设置的标签文字显示不出来,所以,后一种方法虽然更简便,但似乎前一种方法效果更好!
第三种方法:
contentPane.setOpaque(false);
JLabel backgroundLabel = new JLabel("");
ImageIcon background = new ImageIcon(BalloonMove.class.getResource("/images/background.jpg"));
backgroundLabel.setBounds(0, 0, background.getIconWidth(),background.getIconHeight());
backgroundLabel.setIcon(background);
getLayeredPane().add(backgroundLabel, new Integer(Integer.MIN_VALUE));
窗口中的标签,可以直接添加到contentPane面板中,很显然,最后一种方法显示效果很好,且代码简便。

设置一个标签组件,内容为这个字符串,然后用容器的add()方法,把标签加入其中就可以了。

用线程一个一个地写上去
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class TestFrame extends JFrame {

private JLabel jl;
public TestFrame() {
setName("一个一个字地显示");
setBounds(200,200,300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jl = new JLabel();
jl.setHorizontalTextPosition((int) TOP_ALIGNMENT);
jl.setBackground(Color.red);
jl.setSize(300, 300);
jl.setVerticalAlignment(SwingConstants.TOP);
add(jl);
setVisible(true);
}
private void setLabelText(String str){
jl.setText(str);
}

private class WriterWord implements Runnable{
private String words;
public WriterWord(String words) {
this.words = words;
}
@Override
public void run() {
try {
for (int i = 0; i < words.length(); i++) {
setLabelText(words.substring(0,i));
Thread.sleep(1000);//隔一秒设置label文本
}
} catch (Exception e) {
}
}

}

public static void main(String[] args) {
TestFrame tf = new TestFrame();
WriterWord ww = tf.new WriterWord("一个一个地打字");
Thread t = new Thread(ww);
t.start();//运行线程
}
}

看一下下边的例子,在文本框中输入内容,按下按钮,就会在面板上写字。

----------------------------------------------------------------------
import java.awt.BorderLayout;
import java.awt.Graphics;
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.JTextField;

public class App extends JFrame {

public App() {
getContentPane().setLayout(new BorderLayout(0, 0));
MyPanel panel = new MyPanel();
getContentPane().add(panel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setSize(400, 300);
setResizable(false);
setVisible(true);
}

public static void main(String[] args) {
new App();
}
}

class MyPanel extends JPanel implements ActionListener {

private JTextField textField;
private String str = "";

public MyPanel() {
setLayout(null);

textField = new JTextField();
textField.setBounds(12, 93, 170, 19);
add(textField);
textField.setColumns(10);

JButton btnNewButton = new JButton("button");
btnNewButton.addActionListener(this);
btnNewButton.setBounds(194, 92, 91, 21);
add(btnNewButton);
}

public void actionPerformed(ActionEvent e) {
str = textField.getText();
updateUI();
}

public void paint(Graphics g) {
super.paint(g);

g.drawString(str, 10, 10);
}
}

用一个timer就可以了啊,过多少毫秒一触发,总共多少字,触发多少次后退出,都可以啊

java算法 将ip地址段拆分成一个个
答:10.46.40.1;10.46.40.2;10.46.40.3。。。一直到10.46.88.125;10.46.88.126;10.46.88.127,最后将这些单个地址存入一个数组中 要写一个算法 / public static void main(String[] args) { String ipin="58.63.239.160~~58.63.239.191~~58.63.239.160~~58.63.239.191~...

大学速记java重点内容
答:==是判断两个变量或实例是不是指向同一个内存空间,equals()是判断两个变量或实例所指向的内存空间的值是不是相同。 ==是指对内存地址进行比较,equals()是对字符串的内容进行比较 ==是指引用是否相同,equals()是指的值是否相同。 2、final 在 java 中有什么作用 final是Java的关键字,可用于三个地方(修饰类...

java中怎样使一个汉字占两个字符
答:中文并不一定是占两个字节的,具体占多少字节是跟具体的编码方式相关的。比如说:GB2312、GBK、GB18030 编码是占用两个字节的,但是 UTF-8 编码的话至少需要占用三个字节。有一个简单方法,就是把大于 0xff 的字符都作为两个字符(当然是在 GBK 环境下)Java code public static int count(String ...

java 输入一个字符串,打印出该字符串中字符的所有排列
答:实现思路:就是输入字符串后,通过递归的方式,循环每个位置和其他位置的字符。import java.util.Scanner; public class Demo001 { public static void main(String[] args) { String str = ""; Scanner scan = new Scanner(System.in); str = scan.nextLine(); permutation(str.t...

20条必背java知识点学生考专必备
答:2.编译:使用iavac.exe命令编译java源文件,生成字节码文件。格式:javac 源文件名.java 3.运行: 使用java.exe命令解释运行字节码文件。格式:java类名 4.在一个java源文件中可以声明多个clasS,但是只能最多有一个类声明为public,而且被声明为public的类的类名必须与源文件名相同。 5java关键字中所有字母都为小写...

JAVA字符串中,只要有连续的空格就去掉且但要保留一个空格;如果只是一个...
答:一个循环就可以了 用一个布尔值作为前一个字符是否为空格,当前字符也是空格,就不用插入了 String keywords = "大 家 好 啊";StringBuilder result = new StringBuilder();boolean space = false;// 前一个是否为空格,默认第一个不是 for (int i = 0; i < keywords.length(); i++)...

如何用java随机生成一个字母
答:char c=(char)(int)(Math.random()*26+97);System.out.println(c);通过随机函数生成,字母对应的int整型数字,然后转换才char类型的字母。或 tring chars = "abcdefghijklmnopqrstuvwxyz";System.out.println(chars.charAt((int)(Math.random() * 26)));根据chars 随机截取其中的一个字母。

学习编程:一门技艺和技能
答:作为一名初识Java的学习者,我曾对编程抱有疑虑。然而,当我跟着指导教师一同完成一个简单的Java项目时,我对编程的看法发生了翻天覆地的变化。本文将探讨编程的本质和学习方法,帮助初学者更好地掌握这门技艺。技艺和技能编程并非一种知识,而是一门技艺和技能。学习编程需要用学习技艺的方式来学习,动手实践是关键,理...

Java中的字节与16进制转换
答:在Java中,一个byte是如何与16进制紧密相连的呢?本文将为你详细介绍Java中字节与16进制的转换方法,让你更好地理解计算机领域的相关知识。字节与16进制的转换在Java中,一个byte可以分成高4位和低4位,分别转换为16进制字符H和L,然后组合这两个字符来得到完整的16进制表示。这种转换不仅限于单个byte,整个byte数组...

用java怎样实现遍历一个字符串的每一个字母
答:Java遍历一个字符串的每一个字母 String str = "asdfghjkl";方法1:for(int i=0;i<str.length();i++){char ch = string.charAt(i);}方法2:char[] c=s.toCharArray();for(char cc:c){...//cc直接用了}方法3:for(int i=0;i<str.length();i++){String subStr = str....

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网