我如何使下一个按钮转到下一个框架在这个GUI?我需要有它,我可以点击旁边显示更多的细节:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class FilledFrameViewer
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
/*JButton button = new JButton*/
JButton nextButton = new JButton("NEXT");
JLabel label = new JLabel("Frame 1.");
JPanel panel = new JPanel();
panel.add(nextButton);
panel.add(label);
frame.add(panel);
final int FRAME_WIDTH = 300;
final int FRAME_HEIGHT = 100;
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("A frame with two components");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
如果你想隐藏或显示框架,你可以像这样使用
JFrame f1 = new JFrame("Frame 1");JFrame = new JFrame("Frame 2");
隐藏f1,调用f1. setvisible (false);要显示f2,调用f2. setvisible (true);
有点不清楚。是否要将JButton移动到另一个JFrame?如果没有动态规划之类的东西,我想你是做不到的。
您应该查看Oracle的Swing组件教程http://docs.oracle.com/javase/tutorial/uiswing/
看看你的评论。我同意使用多个JFrame是个坏习惯。
编辑
使用事件监听器(参见其他答案)并使其遵循开关情况?然后你可以让它像一个对话框一样显示,或者在你的JFrame里面改变一个JLable ?
对话框教程这里:http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html。我认为你应该用一个标签,并改变它的文本。
JButton nextButton = new JButton("Next");
nextButton.addActionListener(new ActionListner(
private int counter = 0;
public void actionPerformed(ActionEvent e) {
counter++;
switch(counter){
case 1: somelable.setText("Your text here");
};
}));
我是徒手写的,但我猜这样的东西会起作用吗?
你必须在下一帧中编辑代码…NextFrame的例子,
public class NextFrame
public static void main(String[] args)
{
private static FilledFrameViewer parentFrame; //ADD THIS FOR CONNECTION TO FIRST FRAME
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
NextFrame frame = new NextFrame(null); //CHANGES MADE HERE
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
public NextFrame(FilledFrameViewer f) { //CHANGES MADE HERE
this.parentFrame = f; //CHANGES MADE HERE
setTitle("Personal Assistant");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
啊,是的…你还需要在Next按钮中添加一些内容…
的例子:
btnNext = new JButton();
btnNext.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
goNext();
{
private void goNext(){
NextFrame nextframe= new NextFrame(null);
nextframe.setVisible(true);
}
}
});