我已经在我的 JFrame 中添加了一个自定义 JPane 和一个自定义 JMenuBar。JPane显示得很好,但JMenuBar不是。我已经在不同的类中定义了框架和菜单栏
下面是frame类:public类pixel frame {//这个框架将保存用于艺术创作的a pixelPane。这也将包含一个菜单栏,在另一个文件中定义。pixelPane编辑区域;pixelMenuBar菜单栏;public pixel frame(){ event queue . invokelater(new Runnable(){//在运行时创建一个新线程
@Override
public void run() { //when the program runs, do the following
JFrame frame = new JFrame("Pixel Art Creator"); //create a new JFrame (similar to a regular window), and give it the following title
editingArea = new pixelPane();
menuBar = new pixelMenuBar();
frame.add(editingArea); //add a pixelPane named editingArea to the JFrame
frame.setJMenuBar(menuBar); //adds a menu to the JFrame
frame.pack(); //make the window big enough to fit all components (in this case, editingArea)
frame.setLocationRelativeTo(null); //set window to the center of the screen
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Stop the thread and terminate the program.
frame.validate();
frame.setVisible(true); //You can see the window.
menuBar.setVisible(true);
}
});
}
public static void main(String[] args)
{
pixelPane.gridEnabled = true; //changing another variable from pixelPane just for testing.
new pixelFrame(); //create an instance of pixelFrame.
}
}
这是菜单栏:
public class pixelMenuBar extends JMenuBar {
/**
*
*/
private static final long serialVersionUID = 1L;
JMenuBar menuBar;
JMenu file, tool;
JMenuItem save, load, changeColor;
JCheckBoxMenuItem gLines;
public pixelMenuBar() {
menuBar = new JMenuBar();
//creates a "File" menu in the menu bar
file= new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
menuBar.add(file); //add the menu to the menu bar
//creates a "Tools" menu in the menu bar
tool = new JMenu("Tools");
tool.setMnemonic(KeyEvent.VK_T);
menuBar.add(tool);
//Menu items that go under the File menu
save = new JMenuItem("Save File"); //save and export the image as an .svg file
save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.CTRL_DOWN_MASK,KeyEvent.VK_S)); //a Ctrl+S hotkey. Handy dandy!
file.add(save);//adds the Save button to the File menu
load = new JMenuItem("Load File"); //load the file into BufferedImage, make it into a JLabel and add it to the panel.
load.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.CTRL_DOWN_MASK,KeyEvent.VK_L));//a Ctrl+L hotkey. Also handy dandy!
file.add(load);//adds the Load button to the File menu
//Menu items that will go under the Tools menu
gLines = new JCheckBoxMenuItem("Gridlines"); //creates a new checkbox for enabling grid lines. will toggle pixelPane.gridEnabled
gLines.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.CTRL_DOWN_MASK,KeyEvent.VK_G));
tool.add(gLines);//adds the gridlines tool to the Tools menu
tool.addSeparator(); //adds a separating line in the Tools menu. Organization.
changeColor = new JMenuItem("Change Color");//creates a new menu item that will let the user the color of the pixel. Uses a color picker
tool.add(changeColor);//adds Change Color to the Tools menu
}
}
我没有正确向 UI 添加某些内容吗?我仔细检查我使用的是addJMenuBar()而不是addMenuBar()。
首先,类名应该以大写字符开头。你有没有见过Java API中没有的类?遵循 Java 约定。以身作则。
public class pixelMenuBar extends JMenuBar
{
...
public pixelMenuBar()
{
menuBar = new JMenuBar();
你的类“是一个” JMenuBar,但你在类中做的第一件事就是创建一个JMenuBar。
不要创建JMenuBar!
只需将菜单项添加到 JMenuBar 类本身:
//menuBar.add(file); //add the menu to the menu bar
add(file); //add the menu to the menu bar
实际上,甚至不需要PixelMenuBar类,因为您没有向JMenuBar添加任何新功能。只需在主类中添加一个方法,如createMenuBar(...),
该方法创建JMenuBar并添加JMenu/JMenuItem对象。
我知道同样的问题已经被问过很多次了,但是我似乎真的没有在我的代码中发现阻碍JPanel类型的对象显示在JFrame中的错误。下面是扩展JFrame的类的构造函数: 当我运行main方法(这里没有显示)时,它只显示框架和按钮。如果有人能在这方面给点提示,我会非常感谢的。
我的问题是一个热门问题,我阅读并尝试了很多相关帖子,但我没有实现预期的结果,显示菜单。我还没有找到正确的解决方案。 我的应用程序可以在Android 4 . 2 . 2版本上完美运行。(版本代码17)我在Galaxy Duos手机上试用过。 我使用Android版本7,0(版本代码24)我尝试了更多目标SDK版本的变体,具有8,19,24,25并且没有目标SDK规范。 以下是一些相关的部分 -盖德
我一直试图在Android Studio的底部应用程序栏中添加菜单项的标题和菜单图标。我试图设置: 但是它不起作用。只有图标显示出来。我还尝试制作自己的布局文件并使用actionLayout: 这也没用。 我想要的示例(图标下方有文本): 现在的样子: 我的活动的XML: 和我菜单的代码: 我试图创建自己的动作布局的代码(如果相关):
你好 由于某些原因,该图标从未显示在操作栏上,我使用了ifRoom |与text的组合,但仍然没有显示。我也尝试过在风景中旋转。我正在使用genymotion 4.4.2 我正在膨胀菜单中的一个片段: 我在纵向和横向模式下尝试了硬件nexus5,但没有图标。 我也尝试过使用以下方法,但也不起作用: 非常感谢任何建议,
一个没有显示添加到它的的问题。我已经尝试了,我已经切换到只添加,以使代码更短一些。任何帮助都是非常感谢的!
问题内容: 我想通过按下JFrame中的按钮来启动另一个JFrame。但是,如果按Button,它将显示JFrame,但其中不显示Buttons和Sliders。 } 第二个具有完全相同的构造函数。滑块和按钮不是静态的。在应显示“按钮”的位置,屏幕为黑色。 希望你能帮我 :) 编辑: 问题答案: 做你最后一件事… 另外,在添加新组件时,使用和鼓励容器更新其布局。 建议: 确保您的用户界面在EDT上