我有两个问题:
1。为什么当我执行代码时,当我点击按钮P时它没有显示println。 2.我试图用JLabel创建一个背景它工作正常,但它没有覆盖所有的JFrame。我尝试使用try和catch尝试了JFrame,但它没有显示它。
JPanel L1 = new JPanel();
JButton P = new JButton("Open");
JButton P1 = new JButton("Cancel");
Dimension D = new Dimension(80 , 30);
Container C = getContentPane();
JLabel Label2 = new JLabel(new
super.setTitle("Ismail Application");
//Buttons
//Button 1
P.setToolTipText("Click To Open");
P.setPreferredSize(D);
//Button 2
P1.addActionListener(this);
P1.setToolTipText("Click to exit program");
P1.setPreferredSize(D);
//Adding Components
L1.add(P, BorderLayout.WEST);
L1.add(P1, BorderLayout.EAST);
add(L1, BorderLayout.SOUTH);
P1.addActionListener(this);
P.addActionListener(this);
//Labels
Label2.setLayout(null);
Label2.setSize(400,300);
Label2.setToolTipText("This is the Background");
add(Label2, BorderLayout.NORTH);
}
public void actionPerformed (ActionEvent e)
{
if(e.getSource() == P)
{
System.out.println("not working");
}
if(e.getSource() == P1){
}
}
我希望你们能帮忙
由于
答案 0 :(得分:5)
由于您发布的代码无法编译且无法由我们运行,因此很难说明发生了什么。请参阅下面的JButton
附加ActionListener
的最基本示例,每次按下按钮时都会打印一些内容。将其与您的代码进行比较以找出差异,或将代码调整为sscce。
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FrameWithButtonExample {
public static void main( String[] args ) {
EventQueue.invokeLater( new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame( "TestFrame" );
final JButton testButton = new JButton( "TestButton" );
testButton.addActionListener( new ActionListener() {
@Override
public void actionPerformed( ActionEvent aActionEvent ) {
//if check to match the code from the question, but not really needed
if ( aActionEvent.getSource() == testButton ){
System.out.println("TestButton pressed");
}
}
} );
frame.add( testButton );
frame.pack();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );
}
} );
}
}
答案 1 :(得分:3)
您没有显示是否在该类上实现了ActionListener。那就是说,你最好这样做:
P.setActionCommand("P_BUTTON");
然后
if (e.getActionCommand().equals("P_BUTTON"))
比你正在做的那样。
答案 2 :(得分:2)
由于您正在使用Layout,因此请停止向组件提供个人Dimensions。将所有setPreferredSize()内容添加为注释。 最好将JLabel添加到Center而不是North,以便它可以填充组件的最大区域。此外,提供完整的代码,以便我们也可以查看您的ActionListener事物。 对于JLabel部分,请删除
add(Label2, BorderLayout.NORTH);
将其替换为
add(Label2, BorderLayout.CENTER);
对于你的ActionListener部分,试试这个
public void actionPerformed(ActionEvent ae)
{
JButton button = (JButton)ae.getSource();
if (button.equals(P))
{
System.out.println("not working.");
}
else if (button.equals(P1))
{
System.out.println("working.");
}
}
希望这可能会有所帮助。
此致