一个简单的JAVA问题
importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JLabel;importjava...
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class text {
public static void main(String args[]){
JFrame a = new JFrame("");
JPanel b = new JPanel();
JLabel c = new JLabel("Test area");
JLabel e = new JLabel("Status Bar");
b.setLayout(new GridLayout(2,1));
b.add(c);b.add(e);a.add(b);
click d = new click();
c.addMouseListener(d);
a.setSize(100,80);a.setVisible(true);}}
class click implements MouseListener{
public void mousePressed (MouseEvent e){
((JLabel)e.getSource()).setText("按下");}
public void mouseExited (MouseEvent e){
((JLabel)e.getSource()).setText("离开");}
public void mouseEntered (MouseEvent e){
((JLabel)e.getSource()).setText("进入");}
public void mouseReleased (MouseEvent e){
((JLabel)e.getSource()).setText("抬起");}
public void mouseClicked (MouseEvent e){
((JLabel)e.getSource()).setText("击完");}}
请问一下,为什么我想在状态栏Status Bar上显示,却在第一个测试区域Test area上面显示了,请问怎么改呢?
能不能不要内部类,我想要两个类~
两个类的那个Click d = new Click(this);这句通不过!
我晕了,你这个还是不行啊,晕了,又变成了在状态栏兼职测试区域了,上面的测试区都没用了!!
I服了YOU!,不行啊,您真测过吗???!!! 展开
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class text {
public static void main(String args[]){
JFrame a = new JFrame("");
JPanel b = new JPanel();
JLabel c = new JLabel("Test area");
JLabel e = new JLabel("Status Bar");
b.setLayout(new GridLayout(2,1));
b.add(c);b.add(e);a.add(b);
click d = new click();
c.addMouseListener(d);
a.setSize(100,80);a.setVisible(true);}}
class click implements MouseListener{
public void mousePressed (MouseEvent e){
((JLabel)e.getSource()).setText("按下");}
public void mouseExited (MouseEvent e){
((JLabel)e.getSource()).setText("离开");}
public void mouseEntered (MouseEvent e){
((JLabel)e.getSource()).setText("进入");}
public void mouseReleased (MouseEvent e){
((JLabel)e.getSource()).setText("抬起");}
public void mouseClicked (MouseEvent e){
((JLabel)e.getSource()).setText("击完");}}
请问一下,为什么我想在状态栏Status Bar上显示,却在第一个测试区域Test area上面显示了,请问怎么改呢?
能不能不要内部类,我想要两个类~
两个类的那个Click d = new Click(this);这句通不过!
我晕了,你这个还是不行啊,晕了,又变成了在状态栏兼职测试区域了,上面的测试区都没用了!!
I服了YOU!,不行啊,您真测过吗???!!! 展开
展开全部
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class TestFrame {
public static void main(String args[]) {
JFrame a = new JFrame("");
JPanel b = new JPanel();
b.setLayout(new BorderLayout());
JLabel c = new JLabel("Test area");
final JLabel barLabel = new JLabel("Status Bar");
b.add(c);
a.getContentPane().add(barLabel, BorderLayout.SOUTH);
a.getContentPane().add(b, BorderLayout.CENTER);
b.addMouseListener(new MouseListener() {
public void mousePressed(MouseEvent e) {
barLabel.setText("按下");
}
public void mouseExited(MouseEvent e) {
barLabel.setText("离开");
}
public void mouseEntered(MouseEvent e) {
barLabel.setText("进入");
}
public void mouseReleased(MouseEvent e) {
barLabel.setText("抬起");
}
public void mouseClicked(MouseEvent e) {
barLabel.setText("击完");
}
});
a.setSize(100, 80);
a.setVisible(true);
}
}
1:监听改成内部类了。
2:你的布局不对,你可以把你的窗体最大化,状态栏就和上面部分一样大了,这个肯定不对,那么大的状态栏看了都别扭。使用BorderLayout应该就可以了。
尽量使用内部类把,你这种处理完全可以使用内部类,如果内部类会了外部类就自然明白了。
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class TestFrame {
public static void main(String args[]) {
JFrame a = new JFrame("");
JPanel b = new JPanel();
b.setLayout(new BorderLayout());
JLabel c = new JLabel("Test area");
final JLabel barLabel = new JLabel("Status Bar");
b.add(c);
a.getContentPane().add(barLabel, BorderLayout.SOUTH);
a.getContentPane().add(b, BorderLayout.CENTER);
b.addMouseListener(new MouseListener() {
public void mousePressed(MouseEvent e) {
barLabel.setText("按下");
}
public void mouseExited(MouseEvent e) {
barLabel.setText("离开");
}
public void mouseEntered(MouseEvent e) {
barLabel.setText("进入");
}
public void mouseReleased(MouseEvent e) {
barLabel.setText("抬起");
}
public void mouseClicked(MouseEvent e) {
barLabel.setText("击完");
}
});
a.setSize(100, 80);
a.setVisible(true);
}
}
1:监听改成内部类了。
2:你的布局不对,你可以把你的窗体最大化,状态栏就和上面部分一样大了,这个肯定不对,那么大的状态栏看了都别扭。使用BorderLayout应该就可以了。
尽量使用内部类把,你这种处理完全可以使用内部类,如果内部类会了外部类就自然明白了。
展开全部
因为你用c.addMouseListener(d);即Test area作为源组件注册了监听对象,改成e.addMouseListener(d);就行了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你MouseListener加在Test Area上,再这样 ((JLabel)e.getSource()).setText("进入");
当然是显示在Text Area上了。
不知道你的思路是不是点击Test Area然后在status bar上显示,如果是的话,最方便的是用匿名内部类
JFrame a = new JFrame("");
JPanel b = new JPanel();
JLabel c = new JLabel("Test area");
//这里必须是final
final JLabel status = new JLabel("Status Bar");
b.setLayout(new GridLayout(2,1));
b.add(c);b.add(status);a.add(b);
c.addMouseListener(new MouseListener(){public void mousePressed (MouseEvent e){
status.setText("按下");}
public void mouseExited (MouseEvent e){
status.setText("离开");}
public void mouseEntered (MouseEvent e){
status.setText("进入");}
public void mouseReleased (MouseEvent e){
status).setText("抬起");}
public void mouseClicked (MouseEvent e){
status.setText("击完");}}
});
a.setSize(100,80);a.setVisible(true);}}
两个类的话,要这样了
public class test {
public JLabel status = new JLabel("Status Bar");
public Click d;
public test(){
d = new Click(this);
}
public static void main(String args[]) {
test t = new test();
JFrame a = new JFrame("");
JPanel b = new JPanel();
JLabel c = new JLabel("Test area");
// 这里必须是final
b.setLayout(new GridLayout(2, 1));
b.add(c);
b.add(t.status);
a.add(b);
c.addMouseListener(t.d);
a.setSize(100,80);a.setVisible(true);}}
class click implements MouseListener{
test t;
public click(test t){
this.t = t;
}
public void mousePressed (MouseEvent e){
t.status.setText("按下");}
public void mouseExited (MouseEvent e){
t.status.setText("离开");}
public void mouseEntered (MouseEvent e){
t.status.setText("进入");}
public void mouseReleased (MouseEvent e){
t.status.setText("抬起");}
public void mouseClicked (MouseEvent e){
t.status.setText("击完");}}
忘记你把那些东西都放在静态main方法里了,静态方法里是没有this指针的。这样应该好了
你到底想要什么效果啊,说说清楚。。。。。。是不是layout不是你想要的?效果我测过了,没问题啊,是在TextArea上触发鼠标事件在status bar显示啊,已经有两个label了,文字是显示在status bar上的,只不过颜色相同,看上去合并在一起了。
你说说看哪里不行了,是不能运行还是效果不对?当然测过。
当然是显示在Text Area上了。
不知道你的思路是不是点击Test Area然后在status bar上显示,如果是的话,最方便的是用匿名内部类
JFrame a = new JFrame("");
JPanel b = new JPanel();
JLabel c = new JLabel("Test area");
//这里必须是final
final JLabel status = new JLabel("Status Bar");
b.setLayout(new GridLayout(2,1));
b.add(c);b.add(status);a.add(b);
c.addMouseListener(new MouseListener(){public void mousePressed (MouseEvent e){
status.setText("按下");}
public void mouseExited (MouseEvent e){
status.setText("离开");}
public void mouseEntered (MouseEvent e){
status.setText("进入");}
public void mouseReleased (MouseEvent e){
status).setText("抬起");}
public void mouseClicked (MouseEvent e){
status.setText("击完");}}
});
a.setSize(100,80);a.setVisible(true);}}
两个类的话,要这样了
public class test {
public JLabel status = new JLabel("Status Bar");
public Click d;
public test(){
d = new Click(this);
}
public static void main(String args[]) {
test t = new test();
JFrame a = new JFrame("");
JPanel b = new JPanel();
JLabel c = new JLabel("Test area");
// 这里必须是final
b.setLayout(new GridLayout(2, 1));
b.add(c);
b.add(t.status);
a.add(b);
c.addMouseListener(t.d);
a.setSize(100,80);a.setVisible(true);}}
class click implements MouseListener{
test t;
public click(test t){
this.t = t;
}
public void mousePressed (MouseEvent e){
t.status.setText("按下");}
public void mouseExited (MouseEvent e){
t.status.setText("离开");}
public void mouseEntered (MouseEvent e){
t.status.setText("进入");}
public void mouseReleased (MouseEvent e){
t.status.setText("抬起");}
public void mouseClicked (MouseEvent e){
t.status.setText("击完");}}
忘记你把那些东西都放在静态main方法里了,静态方法里是没有this指针的。这样应该好了
你到底想要什么效果啊,说说清楚。。。。。。是不是layout不是你想要的?效果我测过了,没问题啊,是在TextArea上触发鼠标事件在status bar显示啊,已经有两个label了,文字是显示在status bar上的,只不过颜色相同,看上去合并在一起了。
你说说看哪里不行了,是不能运行还是效果不对?当然测过。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
package com.cyber.swing;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class text {
public static void main(String args[]) {
JFrame a = new JFrame("");
JPanel b = new JPanel();
JLabel c = new JLabel("Test area");
// 这里必须是final
final JLabel status = new JLabel("Status Bar");
b.setLayout(new GridLayout(2, 1));
b.add(c);
b.add(status);
a.add(b);
c.addMouseListener(new MouseListener() {
public void mousePressed(MouseEvent e) {
status.setText("按下");
}
public void mouseExited(MouseEvent e) {
status.setText("离开");
}
public void mouseEntered(MouseEvent e) {
status.setText("进入");
}
public void mouseReleased(MouseEvent e) {
status.setText("抬起");
}
public void mouseClicked(MouseEvent e) {
status.setText("击完");
}
});
a.setSize(100, 80);
a.setVisible(true);
}
}
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class text {
public static void main(String args[]) {
JFrame a = new JFrame("");
JPanel b = new JPanel();
JLabel c = new JLabel("Test area");
// 这里必须是final
final JLabel status = new JLabel("Status Bar");
b.setLayout(new GridLayout(2, 1));
b.add(c);
b.add(status);
a.add(b);
c.addMouseListener(new MouseListener() {
public void mousePressed(MouseEvent e) {
status.setText("按下");
}
public void mouseExited(MouseEvent e) {
status.setText("离开");
}
public void mouseEntered(MouseEvent e) {
status.setText("进入");
}
public void mouseReleased(MouseEvent e) {
status.setText("抬起");
}
public void mouseClicked(MouseEvent e) {
status.setText("击完");
}
});
a.setSize(100, 80);
a.setVisible(true);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的都说完了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我就是楼上的小号,我的修改次数到上限了,你实在觉得不行,把qq告诉我,我把效果截图发给你,我不明白你说的不行指的是什么,说说清楚。上面的测试区怎么没用了,难道你要的效果不是在测试区点击,离开进入等等时下面的状态栏显示相应的文字吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询