
使用JPanelgetComponents()方法,可以JPanel上的组件的数组,然后再对组件 *** 作就可以了,运行如下程序会看到效果。
import javaawt;
import javaxswing;
public class GetComponentsTest extends JFrame {
private Container buttonpanel;
public GetComponentsTest() {
super("GetcomponetsTest");
String[] button = { "按钮A", "按钮B", "按钮C", "按钮D", "按钮E", "按钮F" };
buttonpanel = getContentPane();
buttonpanelsetLayout(new GridLayout(1, 6));
for (int x = 0; x < 6; x++) {
buttonpaneladd(new JButton(button[x]));
}
setSize(640, 60);
setVisible(true);
}
public static void main(String[] args) {
GetComponentsTest test = new GetComponentsTest();
Component[] com = testgetContentPane()getComponents();
for(int i=0;i<6;i++){
((JButton)com[i])setFont(new Font("隶书",FontITALIC,20 ));
((JButton)com[i])setForeground(ColorRED);
}
}
}
在 `CTextBox` 控件的 `KeyPress` 事件中,可以使用 `Text` 属性来获取当前文本,此属性返回的是控件当前的文本值。以下是获取当前文本的示例代码:
```
private void cTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string currentText = cTextBox1Text;
ConsoleWriteLine("Current Text: " + currentText);
}
```
在上述代码中,我们在 `CTextBox` 的 `KeyPress` 事件中获取了当前文本,然后通过控制台输出了该文本值。按下每个键时,该事件都会触发,因此可以实时获取到当前文本的值。
你这个程序是捕捉0到9的按键状态,按下再松开时才会记录,想要识别所有按键,把for循环范围扩大。
比如for(charch=32;ch<=127;ch++)这样就包含了特殊符号及大小写字母还有数字。
但是,这个代码是有问题的!
一、你这个代码需在键位已经按下后启动才能识别,否则启动时没有按下对应键位,程序就结束了。要嵌套死循环,让其一直检测。
二、直接扩大ASCII区间,像上面的那样32~127,识别字母区间会被防毒软件直接判断为病毒!!。
三、GetAsyncKeyState不是C语言库函数,是window的函数,换其它 *** 作系统就失效。
GetAsyncKeyState返回值最高位为1则说明对应ch的键被按下,所以这里用&0x8000来判断最高位。
四、想要捕获其它软件界面内容还有很多方法,比如:
1、通过windowAPI函数FindWindow来获取窗口句柄。
2、遍历窗口下控件句柄,找到输入框句柄。
3、通过窗口句柄找到进程id(GetWindowThreadProcessId函数),再通过id获取进程句柄(OpenProcess函数)。
4、向目标进程申请内存(VirtualAllocEx),再通过PostMessage函数异步发送消息获取目标控件内的内容(具体消息要结合控件类型,另外注意PostMessage是异步执行)。
具体自行查阅资料,一言两语说不清,上面步骤需先搞懂window消息机制。
注意:以上方法依然只限window系统,且有数据保护的控件无法获取。
五、或简单暴力的方法,直接写个定时截图,只要硬盘够不停桌面截图。
但不论写什么程序,和装摄像头一样,终究都会被发现。!!!!!!!!!!!!!
以上就是关于关于java中如何取得控件类型和名称的问题...全部的内容,包括:关于java中如何取得控件类型和名称的问题...、c#textbox控件keypress中如何获取当前文本、C语言问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)