swing 的几个例子

本文介绍如何使用Java Swing中的JTextArea组件创建多行文本区域,并演示如何通过按钮控制文本换行。同时,展示了如何利用DocumentListener监听文本框内容变化,以及如何在窗口中添加菜单和菜单项。

JTextArea 是一个显示纯文本的多行区域。它作为一个轻量级组件,提供与 java.awt.TextArea 类的源兼容性。

void setLineWrap(boolean wrap) : 设置文本区的换行策略
boolean getLineWrap() : 获取文本区的换行策略

一个例子:

import javax.swing.JTextArea;

public class TestFrame extends JFrame{

public static void main(String[] args) {
TestFrame frame = new TestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}
private JTextArea jta = new JTextArea(8,40);
//滚动条,滚动条加给谁,我们就需要把那个组件作为滚动条的参数
private JScrollPane jsp = new JScrollPane(jta);
JButton button1 = new JButton(”insert”);
JButton button2 = new JButton(”Wrap”);
JPanel buttonPanel = new JPanel();
public TestFrame(){
setSize(300,300);
setTitle(”TextAreaTest”);
setLayout(new BorderLayout());
add(jsp,BorderLayout.CENTER);
buttonPanel.add(button1);
buttonPanel.add(button2);
add(buttonPanel,BorderLayout.SOUTH);
button1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jta.append(”hellowordhellowlrldhelloworld”);

}
});
button2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
boolean wrap = jta.getLineWrap();
jta.setLineWrap(!wrap);
String str = wrap==true ? “wrap” : “no wrap”;
button2.setText(str);

}
});
}

}

=====================================================================

Document接口 及 DocumentListener接口
Document 是一个作为 swing 文本组件模型的文本容器。观察者使用DocumentListener接口注册以接收文本文档的更改通知。

import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.Document;

public class TestFrame2 extends JFrame{

public static void main(String[] args) {

TestFrame2 frame = new TestFrame2();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}
JTextField jt1 = new JTextField(10);
public TestFrame2(){
setSize(300,300);
setLayout(new FlowLayout());
add(jt1);
Document doc = jt1.getDocument();
doc.addDocumentListener(new DocumentListener() {

@Override
public void removeUpdate(DocumentEvent e) {

System.out.println(jt1.getText());

}

@Override
public void insertUpdate(DocumentEvent e) {

System.out.println(jt1.getText());
}

@Override
public void changedUpdate(DocumentEvent e) {

//文档属性发生改变 ?
}
});
}

}

==============================================================

给窗体添加菜单,及菜单项

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class TestFrame3 extends JFrame{

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestFrame3 frame = new TestFrame3();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}
//只要能加ActionListener监听器的,我们都可以这样处理
Action action = new AbstractAction(”确定”) {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

System.out.println(”Hello”);

}

};
Action action1 = new AbstractAction(”") {

@Override
public void actionPerformed(ActionEvent e) {

System.out.println(”save as….”);
}
};
JMenuBar mb = new JMenuBar();
JMenu menu = new JMenu(”file”);
JMenu menu1 = new JMenu(”Source”);
//把菜单项加到菜单上,把菜单加到菜单栏上
private JButton button = new JButton(action);
public TestFrame3(){
setSize(300,300);
action.putValue(Action.MNEMONIC_KEY, new Integer(’A'));
action.putValue(Action.SHORT_DESCRIPTION, “World”);
action1.putValue(Action.SHORT_DESCRIPTION, “文件另存为”);
action1.putValue(Action.MNEMONIC_KEY,new Integer(’S'));
action1.putValue(Action.SMALL_ICON, new ImageIcon(”D:\\Image\\9.gif”));
this.setLayout(new FlowLayout());

JMenuItem j1 = new JMenuItem(”open”);
j1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {

System.out.println(”Open”);

}
});
JMenuItem j2 = new JMenuItem(”save”);
JMenuItem jt3 = new JMenuItem(”add import”);
menu.add(j1);
menu.add(j2);
menu.add(action1);
mb.add(menu);
menu1.add(jt3);
mb.add(menu1);
setJMenuBar(mb);
add(button);
}

}

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值