如何在 Java 中更改我的框架?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2423197/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do I make my frames change in java?
提问by apawna
Let's say there is a button and if you will click that, a new frame will appear and so on...
假设有一个按钮,如果您单击该按钮,则会出现一个新框架,依此类推...
回答by zapping
The setVisible(true);
function is used to display a frame. Create an object of the desired frame and call this function. Something like this
该setVisible(true);
函数用于显示一个框架。创建所需帧的对象并调用此函数。像这样的东西
//The applications first or the main frame
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MainFrame extends JFrame {
private JButton myFirstButton;
private JButton mySecondButton;
// Constructor for a new frame
public MainFrame {
super("My First Button Program");
myFirstButton = new JButton("First Frame");
myFirstButton.setFont(new Font( "Arial", Font.BOLD, 18));
myFirstButton.setBackground(Color.red);
mySecondButton = new JButton("New Frame");
mySecondButton.setFont(new Font( "Arial", Font.BOLD, 18));
mySecondButton.setBackground(Color.green);
Container c = getContentPane();
FlowLayout fl = new FlowLayout(FlowLayout.LEFT);
c.setLayout(fl);
c.add (myFirstButton);
c.add (mySecondButton);
ButtonHandler handler = new ButtonHandler(); //creation of a new Object
myFirstButton.addActionListener(handler); // Attach/register handler to myFirstButton
mySecondButton.addActionListener(handler); //Attach/register handler to mySecondButton
setSize(400, 300);
show();
}
public static void main(String [] args) {
// Make frame
MainFrame f = new MainFrame();
f.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
// This closes the window and terminates the
// Java Virtual Machine in the event that the
// Frame is closed by clicking on X.
System.out.println("Exit via windowClosing.");
System.exit(0);
}
}
);
} // end of main
// inner class for button event handling
private class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == myFirstButton) {
new NewFrame1();
}
if (e.getSource() == mySecondButton) {
new NewFrame2();
}
}
} // end of inner class
} // end of outer class
The frame to be opened for first button
要为第一个按钮打开的框架
//import statements here
public class NewFrame1 extends JFrame implements ActionListener
{
//initialises the frame and opens it
public NewFrame1()
{
JButton open = new JButton("New Window");
open.addActionListener(this);
add(open);
setVisible(true);
}
public void actionPerformed(ActionEvent event)
{
//code for the new frame
}
}
The frame to be opened for second button
要为第二个按钮打开的框架
//import statements here
public class NewFrame2 extends JFrame implements ActionListener
{
//initialises the frame and opens it
public NewFrame2()
{
JButton open = new JButton("New Window");
open.addActionListener(this);
add(open);
setVisible(true);
}
public void actionPerformed(ActionEvent event)
{
//code for the new frame
}
}
回答by medopal
Make one JFrame
class, call it MainFrame for example, and from here open JPanels
, that way you have a centralized place to commuincate data between different frames,popups,options dialogs ...etc
创建一个JFrame
类,例如将其命名为 MainFrame,然后从这里 open JPanels
,这样您就有了一个集中的地方来在不同的框架、弹出窗口、选项对话框等之间通信数据
Sidenote: i recommend using an MVC design pattern
旁注:我建议使用 MVC 设计模式