我想要'Hello world!'单击我的按钮时显示。 所以转到下一个'框架',但在同一个窗口! 我尝试了卡片布局,但是任何人都可以告诉我如何使用此代码进行布局;
我在这段代码中做错了什么?
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JOptionPane;
public class myTest{
public static void main(String[] args){
JPanel panel = new JPanel();
JButton button1 = new JButton();
frame.add(panel);
panel.add(button1);
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null, "Hello World");
}
});
}
}
答案 0 :(得分:6)
尝试使用代码:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JOptionPane;
public class myTest {
public static void main(String[] args) {
final JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton button1 = new JButton();
frame.add(panel);
panel.add(button1);
frame.setVisible(true);
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(frame.getComponent(0), "Hello World");
}
});
}
}
它按预期工作。
如果您希望消息在同一帧上,请尝试使用此代码。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class myTest {
public static void main(String[] args) {
final JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton button1 = new JButton();
final JLabel label = new JLabel("Hello World");
label.setVisible(false);
frame.add(panel);
panel.add(button1);
panel.add(label);
frame.setVisible(true);
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//JOptionPane.showMessageDialog(frame.getComponent(0), "Hello World");
label.setVisible(true);
}
});
}
}
答案 1 :(得分:1)
将frame.add(panel);
更改为frame.getContentPane().add(panel);
我还假设您已使用JFrame frame = new JFrame();
初始化了框架
答案 2 :(得分:0)
你应该对你的问题给出一个更好的解释,但是阅读你的代码我认为你的问题是你在运行你的程序时没有看到任何东西。尝试在代码中添加以下行。
frame.pack();
frame.setVisible(true);