在这里,我想在按下按钮时执行一个操作,这很容易,但主要问题是在扩展的JPanel中执行。可能有一个简单的解决方案,比如向特定的按钮添加动作监听器并调用actionperformed事件,但我的案例不是这样的,我有4个按钮(t1、t2、t3、t4)。所有这些按钮都将在单个actionperformed事件ae中运行(查看代码段)。稍后您可以看到调用另一个JButtons tr和rf调用actionlistener和actionperformed事件的代码。
为了清晰易懂,你可以浏览一下代码。。。
class Tracker extends JPanel
{
public static void main(String[] args) {
new Tracker(); }
public Tracker()
{
JButton tr=new JButton("TRACKER APPLET");
tr.setBounds(720,170,100,20);
JButton rf=new JButton("REFRESH");
rf.setBounds(200,170,100,20);
boolean tc1=false,tc2=false,tc3=false,tc4=false;
JButton t1=new JButton(" ");
t1.addActionListener(this);
JButton t2=new JButton(" ");
t2.addActionListener(this);
JButton t3=new JButton(" ");
t3.addActionListener(this);
JButton t4=new JButton(" ");
t4.addActionListener(this);
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()==t1)
{
tc1=true;
}
if(ae.getSource()==t2)
{
tc2=true;
}
if(ae.getSource()==t3)
{
tc3=true;
}
if(ae.getSource()==t4)
{
tc4=true;
}
}
tr.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex){}
catch(InstantiationException ex){}
catch(IllegalAccessException ex){}
catch(UnsupportedLookAndFeelException ex) {}
//some food here....
}
});
}
});
rf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
EventQueue.invokeLater(new Runnable() {
@Override
public void run()
{
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (ClassNotFoundException ex){}
catch(InstantiationException ex){}
catch(IllegalAccessException ex){}
catch(UnsupportedLookAndFeelException ex) {}
//some extra work runs here...
}
});
}
});
add(tr);
add(rf);
add(t1);
add(t2);
add(t3);
add(t4);
}
我在这里的问题是我无法实现ActionListener作为已经扩展JPanel的主类.我只是想得到与J按钮的工作:: 想在按钮(t1|t2|t3|t4)和JButton(tr|rf)按时间顺序按下时执行单个动作...
提前谢谢。。
class Tracker extends JPanel implements ActionListener
你的代码中包含了一些方法。。。
该代码适用于:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Tracker extends JPanel implements ActionListener {
public Tracker() {
tr.setBounds( 720, 170, 100, 20 );
tr.addActionListener( this );
rf.setBounds( 200, 170, 100, 20 );
rf.addActionListener( this );
t1.addActionListener( this );
t2.addActionListener( this );
t3.addActionListener( this );
t4.addActionListener( this );
add(tr);
add(rf);
add(t1);
add(t2);
add(t3);
add(t4);
}
@Override
public void actionPerformed( ActionEvent e ) {
Object src = e.getSource();
if( src == t1 ) {
tc1 = true;
}
else if( src == t2 ) {
tc2 = true;
}
else if( src == t3 ) {
tc3 = true;
}
else if( src == t4 ) {
tc4 = true;
}
else if( src == tr ) {
}
else if( src == rf ) {
}
}
private final JButton tr = new JButton( "TRACKER APPLET" );
private final JButton rf = new JButton( "REFRESH" );
private final JButton t1 = new JButton( " " );
private final JButton t2 = new JButton( " " );
private final JButton t3 = new JButton( " " );
private final JButton t4 = new JButton( " " );
boolean tc1 = false, tc2 = false, tc3 = false, tc4 = false;
public static void main( String[] args ) {
JFrame frame = new JFrame( "" );
frame.add( new Tracker());
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
}
}
我正在设计一个JApplet,基本上这个小程序将允许用户绘制一个二次方程图,并插入x轴和y轴的范围。但要达到这一点,还有很多工作要做。 我还在设计界面的阶段。 以下是我的代码:
我试图在一个Jframe上使用两个JPanel。我使用容器将它们添加到框架中。所以当我将第一个JPanel添加到框架中时,会调用油漆组件方法,但当我将第二个JPanel添加到框架中时,JVM不会调用油漆组件方法。 这是代码, 在这里,我将面板1(J面板)对象添加到构造函数中的JFrame中。我正在将容器引用传递给构造函数 。 (Panel1类具有侦听鼠标单击的事件类,当鼠标单击时,它会创建Pane
问题内容: 如果应用程序是第一次加载,我正在尝试执行segue。我可以在调试器中看到我的打印消息,但是Perform Segue无法正常工作。我没有任何错误。有人可以告诉我怎么了吗? 问题答案: 您不能在viewDidLoad()中使用performSegue()。将其移动到viewDidAppear()。 在viewDidLoad()时,当前视图甚至还没有附加到窗口,因此尚无法进行隔离。
问题内容: 我正在用PHP生成典型的Web 2.0 HTML页面:它包含许多标记和JavaScript代码,这些事件将在load事件之后实质上改变DOM。 有没有一种方法可以直接从PHP获取最终的HTML代码,而无需使用任何浏览器打开页面? 例如,假设页面的HTML是(仅作为示例): 该HTML保存在PHP变量中。现在,我想将该变量传递给某个函数,该函数将返回$ result = 。 这可能吗?
我有一个四列DataFrame,其中有两列标记化的单词,这些单词已经删除并转换为小写,现在正试图阻止。 我不确定如果方法访问系列加上它的单个单元格,或者如果我需要另一种方式进入每个记录,所以尝试了两者(我想!) --------------------------------------------------------------------------- TypeError Tracebac
但是,我的程序稍后尝试将一个新的JPanel添加到类的扩展JPanel中,方法是: 这个新的JPanel以正确的BorderLayout格式显示内容,但是JPanel本身将保持在扩展JPanel的顶部中心,我知道这是因为默认布局设置为FlowLayout,但是将其设置为BorderLayout只会导致面板占用整个屏幕。将布局设置为null将完全破坏框架,除了框架的最小化和关闭按钮之外,什么也没有出