到目前为止,我只使用在学校学到的swing和JComponents构建了“小型”图形应用程序。然而,我再也无法忍受丑陋的JButtons了。我尝试过使用不同的JButton方法,例如更改颜色、放置图标等,但我仍然不满意。如何在java中制作更好的GUI?我正在寻找不太重的替代方案(例如,没有大型框架或过于复杂的库)。 最佳答案 Swing支持更改外观。Thistutorial解释如何:UIManager.setLookAndFeel(lookAndFeelClassName);另一种方法是使用L&F启动您的应用:java-Dswin
这是我的问题:我有一个jList和一个弹出菜单。当我右键单击jList时,会显示弹出菜单。问题是鼠标指向的jList项目不会选择。我希望它这样做。当我将光标指向列表中的一个项目并按下右键时,我希望发生两件事。选择我单击的项目并显示弹出菜单。我试过了:jLists.addMouseListener(newMouseAdapter(){@OverridepublicvoidmousePressed(MouseEvente){jList.setSelectedIndex(jList.locationToIndex(e.getPoint()));}});jList.setComponentPo
这是我的问题:我有一个jList和一个弹出菜单。当我右键单击jList时,会显示弹出菜单。问题是鼠标指向的jList项目不会选择。我希望它这样做。当我将光标指向列表中的一个项目并按下右键时,我希望发生两件事。选择我单击的项目并显示弹出菜单。我试过了:jLists.addMouseListener(newMouseAdapter(){@OverridepublicvoidmousePressed(MouseEvente){jList.setSelectedIndex(jList.locationToIndex(e.getPoint()));}});jList.setComponentPo
我正在使用jProfiler来查找Javaswing应用程序中的内存泄漏。我发现了一个不断增长的JFrame实例。此框架打开,然后关闭。使用jProfiler,并查看到GCRoot的路径,只有一个引用,“JNI全局引用”。这是什么意思?为什么它会卡在框架的每个实例上? 最佳答案 JNI全局引用是从“native”代码到由Java垃圾收集器管理的Java对象的引用。其目的是防止收集仍在被native代码使用但在Java代码中似乎没有任何实时引用的对象。JFrame是一个java.awt.Window,并与“native”Window对
我正在使用jProfiler来查找Javaswing应用程序中的内存泄漏。我发现了一个不断增长的JFrame实例。此框架打开,然后关闭。使用jProfiler,并查看到GCRoot的路径,只有一个引用,“JNI全局引用”。这是什么意思?为什么它会卡在框架的每个实例上? 最佳答案 JNI全局引用是从“native”代码到由Java垃圾收集器管理的Java对象的引用。其目的是防止收集仍在被native代码使用但在Java代码中似乎没有任何实时引用的对象。JFrame是一个java.awt.Window,并与“native”Window对
这是我想做的截图:那里发生的事情是JButton正确显示,但是当我单击它时没有任何反应。经过一番搜索,我发现table.getValueAt()返回的Object是String而不是JButton...代码如下:tblResult=newJTable(data,cols){publicTableCellRenderergetCellRenderer(introw,intcolumn){returnnewClientsTableRenderer();}};我使用它在运行时填充JTable:(tblResult现在是Clients.rblResult)SwingUtilities.invo
这是我想做的截图:那里发生的事情是JButton正确显示,但是当我单击它时没有任何反应。经过一番搜索,我发现table.getValueAt()返回的Object是String而不是JButton...代码如下:tblResult=newJTable(data,cols){publicTableCellRenderergetCellRenderer(introw,intcolumn){returnnewClientsTableRenderer();}};我使用它在运行时填充JTable:(tblResult现在是Clients.rblResult)SwingUtilities.invo
是否可以以简单的方式绘制具有给定边框厚度的矩形? 最佳答案 如果您在Graphics2D上绘图对象,你可以使用setStroke()方法:Graphics2Dg2;doublethickness=2;StrokeoldStroke=g2.getStroke();g2.setStroke(newBasicStroke(thickness));g2.drawRect(x,y,width,height);g2.setStroke(oldStroke);如果这是在Swing组件上完成的,并且传递给您的是Graphics对象,则可以将其向下转
是否可以以简单的方式绘制具有给定边框厚度的矩形? 最佳答案 如果您在Graphics2D上绘图对象,你可以使用setStroke()方法:Graphics2Dg2;doublethickness=2;StrokeoldStroke=g2.getStroke();g2.setStroke(newBasicStroke(thickness));g2.drawRect(x,y,width,height);g2.setStroke(oldStroke);如果这是在Swing组件上完成的,并且传递给您的是Graphics对象,则可以将其向下转
所以我知道这是一个受欢迎的问题,并且已经找到了解决方案。但是当我尝试这个时它不能正常工作。我的JTextField为空,并且按钮未启用。当我在我的文本字段中写一些东西时,按钮没有被启用。所以我的程序应该每秒检查一次这个字段是否为空。只要有人在文本字段中写入内容,就应该启用该按钮。^^loginbt=newJButton("Login");loginbt.addActionListener(newloginHandler());add(loginbt);if(name.getText().equals("")){loginbt.setEnabled(false);}else{loginb