Tag: 用户界面

在JTable的单个列上显示MySQL数据库中的图像

我正在尝试显示从blob数据类型的MySQL数据库中检索的图像。 无法弄清楚导致图像列显示数据的问题是什么[B@29b8e4f7而不是图像图标。 DefaultTableModel model = new DefaultTableModel(new Object[]{ “image”, “item_name”, “quantity”,”price”, “category”, “color”, “size”}, 0){ @Override public Class getColumnClass(int column) { switch(column){ case 0: return ImageIcon.class; default: return String.class; } } }; myTable.setModel(model); … ResultSet rs = database.getRS(); int columns = rs.getMetaData().getColumnCount(); while(rs.next()){ Object[] row = new Object[columns]; for(int i = 1; i <= columns; […]

在thread.sleep()之前JFrame没有更新

我正在使用GUI和JFrames / JPanel创建一个棋盘游戏,您可以在其中与计算机对战。 我有一个名为showPieces()的方法,它通过更改按钮数组(以网格格式布局)上的图像图标来更新电路板GUI。 更新图标后,使用revalidate()和repaint()方法更新GUI。 showPieces()方法有一个参数,每次调用时都需要传递给它。 我遇到的主要问题是我希望人类进行移动,更新GUI,等待1秒钟,计算机使其移动然后循环直到有人获胜。 我的基本代码如下: do{ human.makeMove(); gui.showPieces(data); try { Thread.sleep(1000); } catch(InterruptedException ex) { Thread.currentThread().interrupt(); } computer.makeMove() gui.showPieces(data); }while(playing); 这导致了这样的问题:当人类玩家进行移动时,GUI将冻结一秒钟,然后在延迟之后,两个动作同时进行。 我希望它有意义,但我是Java的新手,可能不得不更多地考虑线程,因为我不太了解它。

在Java中动态生成按钮

我正在尝试动态生成表单。 基本上,我想加载一个购买项目列表,并为每个项目生成一个按钮。 我可以确认按钮是使用调试器生成的,但它们没有显示。 这是在JPanel的子类中: private void generate() { JButton b = new JButton(“height test”); int btnHeight = b.getPreferredSize().height; int pnlHeight = this.getPreferredSize().height; int numButtons = pnlHeight / btnHeight; setLayout(new GridLayout(numButtons, 1)); Iterator it = DrinkMenu.iterator(); for (int i = 0; i <= numButtons; ++i) { if (!it.hasNext()) { break; } final Drink dr = it.next(); […]

删除在Java GUI中使用Alt-F4和Alt-TAB的可能性

可能重复: Java全屏程序(Swing)-Tab / ALT F4 我有一个全屏框架运行,我希望模仿一个Kiosk环境。 要做到这一点,我需要“捕捉”所有出现的Alt – F4和Alt – Tab始终按下键盘。 这有可能吗? 我的伪代码: public void keyPressed(KeyEvent e) { //get the keystrokes //stop the closing or switching of the window/application } 我不确定keyPressed和它的关联(keyReleased和keyTyped)是否是正确的方法,因为从我读过的,它们只处理单个键/字符。

如何在Java中平滑滚动JFrame

我的Java应用程序中有一个JFrame包含一个JPanel ,我在运行时创建了一些绘图对象。 问题是在滚动JFrame大图时滚动速度变慢而滚动条不能平滑移动。 请注意我正在使用Graphics 2D对象并在滚动操作上进行repaint 。 有没有办法平滑JFrame的滚动动作。 这是代码的一部分 public class DiagramPanel implements MouseListener{ int click=0; Point p1; Point p2; private Dimension panelDimension; …. // variables public void go() { p1 = new Point(); p2 = new Point(); JFrame f = new JFrame(); f.setVisible(true); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); f.setSize(1200,500); panelx = new DiaPanel(); panelx.setOpaque(true); panelx.setBackground(Color.white); panelx.setAutoscrolls(true); panelx.addMouseListener(this); JScrollPane scrollPane […]

Java:JLabels中的换行符?

我正在尝试使用多行文本制作Swing JLabel。 它添加得很好,但换行没有通过。 我该怎么做呢? 或者,我可以只为JLabel指定一个最大宽度,并知道文本会换行,就像在div中一样吗? private void addLegend() { JPanel comparisonPanel = getComparisonPanel(); //this all displays on one line JLabel legend = new JLabel(“MMM FFF MMM FFFO O OOM M MMMM.\nMMM FFF MMM FFFO O OOM M MMMM.\nMMM FFF MMM FFFO O OOM M MMMM.\n”); comparisonPanel.add(legend); }

序列化JavaFX组件

我正在尝试在Java FX下开发一个小拖放应用程序。 用户将在某些位置删除按钮,菜单,标签等JFX组件。 完成后,他将保存此布局,稍后他将重新打开布局,他将再次使用它。 存储有关放在某个位置的所有对象的信息非常重要。 我决定为此目的使用序列化。 但是我无法序列化JavaFX组件。 我试图序列化按钮,场景,阶段,JFXPane但似乎没有任何工作(我获得了NotSerializableException)。 有关如何保存所有组件然后检索它们的任何建议? PS:我试图用FXML找出一些方法,但我没有成功。 非常感谢你的答案:)

在Windows中更改org.eclipse.swt.widgets背景颜色

现在我正在尝试使用以下代码更改org.eclipse.swt.widgets.Button的背景颜色: 按钮sceneButton = new Button(border,SWT.TOGGLE | SWT.FLAT); sceneButton.setBackground(Color.RED); 这在我在Solaris中运行程序时工作正常,但在Windows中运行代码时什么都不做。 这可能吗? 如果没有,是否有某种解决方法可以让我更改背景颜色(即使“颜色”是图像),同时仍然在按钮中显示文字? 谢谢!

如何将事件监听器与“询问”事件相结合?

我为一个终端写了一个简单的小迷宫游戏,它反复要求用户做某事(例如“你想去哪个方向?[N / E / S / W]”)。 我有一个在循环中运行的navigate()方法,它会触发这些问题,存储它们的答案并根据答案做一些事情。 public enum Dir (N, E, S, W); public void navigate() { Dir nextDir = utils.askDirection(“Which way do you want to go?”); // Do stuff with answer, like changing position of user in maze } 现在,我为我的游戏编写了一个简单的GUI。 我故意将所有对终端的引用放在ConsoleUtils类中,该类实现了Utils接口(这有像askQuestion()这样的方法) – 这个想法是我可以创建一个GuiUtils类并让我的游戏作为终端游戏或作为GUI游戏。 问题是navigate方法向用户询问一个问题,然后“等待”响应, Utils类通过使用Scanner读取最新的输入行来给出响应。 但是,如果我在GUI中使用事件监听器来处理新的N / E / S / W按钮,则无论navigate方法是否要求,都会触发事件。 […]

如何在java中有效地使用cardlayout,以便使用各种面板构造函数内的按钮从面板切换

我是新手使用cardlayout,我有一些关于如何实现它的问题。 我首先想知道实现cardlayout的最佳方法,以便我可以从面板切换到面板。 我的主要问题是如何使用面板构造器内的按钮从面板切换到面板。 我今天刚刚开始研究这个项目,所以你会看到一些未完成或没有意义的代码。 我首先尝试使我的所有类扩展JFrame,但这导致了多个不需要的窗口。 如果我能得到一些关于如何有效使用cardlayout以及如何使用我的其他面板构造器中的按钮切换面板的示例。 我尝试使用cardlayout只适用于我在gui类中创建的按钮,但这不是我想要的结果。 如果可以,请提供帮助,并提前致谢。 这是我的主要课程。 public class controller{ public static void main(String[] args){ new Gui(); } } 这是我的gui课。 import java.awt.CardLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; public class Gui extends JFrame{ homePage home = new homePage(); public JPanel loginPanel […]