nestedPanel = new separateJPanel
有什么建议可以让我做到这一点吗?
一种简单的方法是给您的JPanel类一个委派方法,允许其他类向感兴趣的按钮添加ActionListeners。例如:
public void addButton1ActionListener(ActionListener listener) {
button1.addActionListener(listener);
}
这样,如果JFrame持有JPanel的一个实例,它就可以调用这个方法将一个侦听器传递到JButton中。例如:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Foo {
private static void createAndShowGui() {
Frame1 frame = new Frame1();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
// I almost never extend JFrame
class Frame1 extends JFrame {
private Panel1 panel1 = new Panel1();
private JLabel label = new JLabel(" ", SwingConstants.CENTER);
public Frame1() {
super("Foo");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
add(panel1, BorderLayout.CENTER);
add(label, BorderLayout.SOUTH);
pack();
setLocationByPlatform(true);
panel1.addButton1ActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
label.setText("Button pressed");
}
});
}
}
class Panel1 extends JPanel {
private JButton button1 = new JButton("Button");
public Panel1() {
add(button1);
}
public void addButton1ActionListener(ActionListener listener) {
button1.addActionListener(listener);
}
}
注意,这个解决方案对于简单的玩具程序很好,但是如果您的想法是创建一个真正的大型应用程序,那么它将不能很好地扩展,因为它增加了代码的耦合性,降低了内聚性。在这种情况下,更好的做法是努力创建一个使用更多模型-视图-控制或MCV体系结构的程序。
问题内容: 我正在学习Java gui。我学会了创建窗口的方法是继承或扩展类,并且很好地使用它,因为它包含窗口的所有属性。现在,如果要在此窗口中添加一些内容,则需要使用方法。但是今天我碰到了一个窗口,我们可以通过添加东西。 两种方法有什么区别?它们之间有某种联系吗? 问题答案: 您不应不必要地扩展该类(仅当您向该类添加其他功能时) JFrame : 扩展和。 它是一个顶层容器,用于表示窗口的最低要
我正在学习Java GUI。我学习创建窗口的方法是继承或扩展类,使用它是很好的,因为包含窗口的所有属性。现在如果我想在这个窗口中添加一些东西,我需要使用方法。但是今天我遇到了,它也创建了一个windows,我们可以通过添加内容。 这两种方法有什么区别?他们有什么关系吗?
我想知道我们是否可以有一个布局不同于其父JFrame的JPanel。例如。如果我有JFrame与边框布局,我们有一个JPanel嵌入到它,它有不同的布局。有可能吗? 我正在努力做这件事。但是这样JPanel的组件就不会显示出来了。
你好,我实际上正在尝试从jPanel切换到我的JFrame中的另一个jPanel。我已经更改了我的代码,下面是我遵循以下内容的样子:
问题内容: 我已经编写了这段代码来显示面板上的一些颜色: 正确位置和正确尺寸的两个第一面板。但是最后一个将所有帧填充为蓝色。怎么了? 问题答案: 您必须使用适当的布局管理器。默认情况下,JFrame有一个。 查看本教程的LayoutManagers: http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?