设有一批英文单词存放在一个数组中,编制一个图形界面程序浏览单词。在界面中安排一个标签显示单词,另有“上一个”、“下一个”两个按钮实现单词的前后翻动。
程序员文章站
2022-05-28 21:49:44
...
可能因为平台的原因,我在IDEA上编写GUI程序用AWT是会出现乱码,即awt貌似不支持中文(找了很多方法都无效),最后只能用swing代替awt了,swing属于轻量级,而且控件更多更广,拥有awt的所有功能,还增加了许多新的方法,在商业工作中一般用swing编程。
用swing实现如下
package zjc.com;
import javax.swing.*;
import java.awt.*;
public class Test11 extends JFrame{
int i=0;//记录单词所在位置
String[] a={"one","two","three","four","five"};
public Test11(){
JButton jb1 = new JButton("上一个");
JButton jb2 = new JButton("下一个");
JLabel tf = new JLabel(a[0],JLabel.CENTER);//显示单词,默认显示第一个,并将标签内容设置*对齐
setLayout(new BorderLayout());//将布局改为流式布局,并将panel放在*
add(jb1,BorderLayout.WEST);//将按钮1放入窗体中
add(tf,BorderLayout.CENTER);//将标签放入窗体中
add(jb2,BorderLayout.EAST);//将按钮2放入窗体中
jb1.addActionListener(e -> {//匿名内部类,点击“上一步”触发
if(i>=1&&i<=4){//在[1,4]之内时,i-1,否则将i置为4,即回到最后一个单词
i--;
}else {
i=4;
}
tf.setText(a[i]);
});
jb2.addActionListener(e -> {//匿名内部类,点击“下一步”触发
if(i>=0&&i<=3){//在[0,3]之内时,i+1,否则将i置0,即回到第一个单词,
i++;
}else {
i=0;
}
tf.setText(a[i]);
});
}
public static void main(String[] args) {
JFrame jf=new Test11();//定义窗体
jf.setVisible(true);//窗体设置可见
jf.setSize(400,400);//设置窗体的初始位置
}
}
运行如下
但是还是想要用awt实现的话怎么办呢,我们可以用简单的记事本去编写命令,这时awt会调用本地的GUI,所以与平台无关,
用awt实现如下:
package zjc.com;
import java.awt.*;
public class Test11 extends Frame{
int i=0;//记录单词所在位置
String[] a={"one","two","three","four","five"};
public Test11(){
Button b1 = new Button("上一个");
Button b2 = new Button("下一个");
Label tf = new Label(a[0],Label.CENTER);//显示单词,默认显示第一个,并将标签内容设置*对齐
setLayout(new BorderLayout());//将布局改为 BorderLayout布局
add(b1,BorderLayout.WEST);//将按钮1放入窗体
add(tf,BorderLayout.CENTER);//将标签放入窗体
add(b2,BorderLayout.EAST);//将按钮2放入窗体
b1.addActionListener(e -> {//匿名内部类,点击“上一步”触发
if(i>=1&&i<=4){//在[1,4]之内时,i-1,否则将i置为4,即回到最后一个单词
i--;
}else {
i=4;
}
tf.setText(a[i]);
});
b2.addActionListener(e -> {//匿名内部类,点击“下一步”触发
if(i>=0&&i<=3){//在[0,3]之内时,i+1,否则将i置0,即回到第一个单词,
i++;
}else {
i=0;
}
tf.setText(a[i]);
});
}
public static void main(String[] args) {
Frame f=new Test11();//定义窗体
f.setVisible(true);//窗体设置可见
f.setSize(400,400);//设置窗体的初始位置
}
}
实验结果如下:
但这里运行时,可能会有人出现GBK编码错误的情况,这里我把解决方案也放在这里,希望可以帮到大家:
CMD运行JAVA出现编码GBK的不可映射字符处理方法