Java Swing; 如何在单击按钮后显示文本

我想要’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"); } }); } } 

试试代码:

 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); } }); } } 

更改frame.add(panel); to frame.getContentPane().add(panel); 我还假设您已使用JFrame frame = new JFrame();初始化了帧JFrame frame = new JFrame();

您应该对您的问题给出更好的解释,但是阅读您的代码我认为您的问题是您在运行程序时没有看到任何内容。 尝试在代码中添加以下行。

 frame.pack(); frame.setVisible(true);