gpt4 book ai didi

java - 组合 Swing 组件

转载 作者:行者123 更新时间:2023-11-30 04:20:56 25 4
gpt4 key购买 nike

过去几天我一直在尝试手动编写 GUI,但遇到了一个非常基本的问题。我有一个 JFrame 作为主窗口,他们尝试在其中添加 JPanel 和其他组件。这些部分单独工作,但将它们组合在一起时遇到问题。在代码中,问题在于将工具栏添加到 JPanel,然后将两者组合到 JFrame。按照 Oracle 示例构建工具栏( http://docs.oracle.com/javase/tutorial/uiswing/components/toolbar.html ),但我认为问题在于我如何将其添加到框架中,或者是将组件添加到 JPanel 然后是框架的一般方法。下面的代码......任何想法

框架类

import javax.swing.*;
import java.awt.*;

public class frmMainMenu {
public static void main(String main[]){
//Create Frame
JFrame frmMainMenu = new JFrame();

//Size Frame
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int Width = screenSize.width;
int Height = screenSize.height;

frmMainMenu.setSize(Width,Height);

//Add Components
comLeftToolBar obj1 = new comLeftToolBar();
frmMainMenu.add(obj1);

//Display Frame
frmMainMenu.setVisible(true);
}
}

工具栏类

import java.awt.*;
import javax.swing.*;

public class comLeftToolBar extends JFrame{
//Create ToolBar
public void comCreateNavBar() {
JToolBar comNavToolBar = new JToolBar();
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int Height = screenSize.height;
comNavToolBar.setSize(50, Height - 100);
comNavButtons(comNavToolBar);

}
//Create Buttons
public void comNavButtons(JToolBar comNavToolBar) {
JButton comNavButton = new JButton();
JButton comProButton = new JButton();

comNavToolBar.add(comNavButton);
comNavToolBar.add(comProButton);
}
//Create Navigation Bar
public void comLeftNavBar() {
JPanel comNavBar = new JPanel();
comNavBar.add(new comLeftToolBar());

}
}

感谢大家的指导,非常感谢

最佳答案

该代码中存在多个问题,这表明您正在尝试“魔法编程”。那是行不通的。您需要阅读教程并阅读 JavaDocs,以便有机会制作一个可以工作的 GUI。此代码编译、运行并显示工具栏,但它仍然不理想。

import javax.swing.*;
import java.awt.*;

public class FrmMainMenu {
public static void main(String main[]){
//Create Frame
JFrame frmMainMenu = new JFrame();

//Size Frame
frmMainMenu.setExtendedState(JFrame.MAXIMIZED_BOTH);

//Add Components
comLeftToolBar obj1 = new comLeftToolBar();
obj1.comCreateNavBar();
frmMainMenu.add(obj1);

frmMainMenu.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

//Display Frame
frmMainMenu.setVisible(true);
}
}

class comLeftToolBar extends JPanel{

//Create ToolBar
public void comCreateNavBar() {
setLayout(new BorderLayout());
JToolBar comNavToolBar = new JToolBar();
comNavButtons(comNavToolBar);

add(comNavToolBar, BorderLayout.PAGE_START);
}

//Create Buttons
public void comNavButtons(JToolBar comNavToolBar) {
JButton comNavButton = new JButton("Nav");
JButton comProButton = new JButton("Pro");

comNavToolBar.add(comNavButton);
comNavToolBar.add(comProButton);
}

//Create Navigation Bar
public void comLeftNavBar() {
JPanel comNavBar = new JPanel();
comNavBar.add(new comLeftToolBar());
}
}

其他提示

  1. Swing GUI 应该在 EDT(事件调度线程)上创建和更改。请参阅Concurrency in Swing更多细节。
  2. Java GUI 可能必须在多种平台、不同的屏幕分辨率和使用不同的 PLAF 上工作。因此,它们不利于元件的精确放置。要组织组件以获得强大的 GUI,请使用布局管理器或它们的组合,以及用于空白的布局填充和边框。

关于java - 组合 Swing 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17057466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com