草庐IT

java - 出现滚动条时包含 JPanel 的 JScrollPane 调整大小

在我的Java应用程序中使用JScrollPane时遇到一个小问题。我有一个包含JPanel的JScrollPane。此JPanel使用任意宽度的按钮(垂直排序)动态更新。JPanel自动将其宽度调整为内部最大的JButton组件。现在,当垂直滚动条出现时,它会占用我的JPanel右侧的一些空间,这会导致最大的按钮无法完全显示。除了显示整个按钮之外,我不想使用水平滚动条。有没有一种方法可以在出现滚动条时调整我的JPanel的大小,使其很好地显示在我的按钮旁边?或者是否有任何其他方法可以让滚动条出现在我的JPanel旁边?提前致谢!编辑:这是我的问题的演示。当您将窗口调整到较小的高度时,

java - Swing中JTextField的透明边框

我在JPanel中有一个搜索字段。JPanel有一个背景图像。我想在此面板中放置一个JTextField,但JTextField应该有一个透明边框,因此它在顶部和底部有一些填充,您应该在其中看到面板的背景图像。我这里有一个SSCCE,其中面板有蓝色背景而不是背景图像。我希望文本字段为白色,但周围有边框,这样您就可以看到它下方的蓝色面板。透明边框会很好,但EmptyBorder不起作用。这是SSCCE:importjava.awt.BorderLayout;importjava.awt.Color;importjavax.swing.BorderFactory;importjavax.s

Java GUI,根据actionListener改变面板

我在两个不同的面板中添加了两个按钮,如果单击第一个按钮,则需要转到下一个面板,其中包含第二个按钮。但是当我点击第一个按钮时,按钮并没有被替换。/*JavaGUI*/importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;publicclassTestFrameextendsJFrame{privateJPanelpanel1,panel2;privateJButtonbut,but2;publicTestFrame(){createPanel();addPanel(

Java 在 Mac OS X 中最大化或全屏窗口后停止捕获鼠标移动事件

当我通过在OSX上按下最大化按钮或全屏按钮来放大窗口时,不再捕获鼠标移动事件(尽管拖动是)。我在下面提供了一个突出显示该问题的演示程序。可以使用MouseEventDemowebstartexample复制最大化问题在JavaTutorialswebsite上.经过一些故障排除后,我注意到如果鼠标离开窗口(例如,移动到窗口顶部以访问菜单栏)然后返回,则会重新捕获鼠标移动。看起来这个问题可能与调整动画期间鼠标位置和窗口之间的关系有关,因为鼠标在调整大小之前不在框架中,但之后即使它不一定在此过程中移动。importjava.awt.Window;importjava.awt.event.M

java - 框架总是在我的程序之上

我正在尝试在未修饰的alwaysOnTop框架中创建一种工具栏。因此,我希望我的框架位于主框架之上,而不是其他程序的框架之上。我试过这段代码:publicclassTest{privatestaticJFramemainFrame;/***@paramargsthecommandlinearguments*/publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){@Overridepublicvoidrun(){mainFrame=newJFrame("test");mainFrame.se

Java Swing JMenu 助记符

我有一个使用JMenu创建的菜单。我想为这个菜单分配一个快捷键Alt-F。我使用setMnemonic('F')来做到这一点,但菜单无法识别助记符。解决或调试此问题的最佳方法是什么?我发现设置断点并没有多大帮助。谢谢。代码片段://higherupinvariabledeclaration/**Menusonthemenubar*/privateJMenuuiFindMnu=newJMenu("Find");...//insidetheconstructor//setmnemonicfortheFindmenuuiFindMnu.setMnemonic('F');

Java - 在 setBorder 中设置字体/颜色

有没有办法为Text1和Text2文本定义我自己的字体和配色方案在setBorder方法中。Java新手,在SUN教程中找不到它。我的代码//CreatePositionsTableJPanelSpreadPanel=newJPanel();SpreadPanel.setBorder(BorderFactory.createTitledBorder("Text1Text2"));问候西蒙 最佳答案 setBorder(BorderFactory.createTitledBorder(null,"text",TitledBorder.

Java:我应该在哪里放置匿名监听器逻辑代码?

我们在工作中争论过什么是在java中使用监听器的最佳实践:监听器逻辑是应该留在匿名类中,还是应该放在单独的方法中,例如:button.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){//codehere}});或button.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){buttonPressed();}});privatevoidbuttonPressed(){//co

使用 Java SWING 的 Java 2d 游戏

我和我的friend开始使用Java为SNES开发类似塞尔达的游戏。唯一的问题是我们不知道该使用什么:我们自己的AWT引擎,或者我们是否可以使用SWING使其更容易。所以..简短的问题是:对于软java-2d游戏,使用JavaSwing是好还是坏?为什么?考虑到游戏并不“重”。提前致谢! 最佳答案 我试过几次,发现:如果您的图形都是未旋转(或象限旋转)的Sprite和固定或平铺的背景图像,它通常足够快。如果您需要旋转图像或绘制几何形状(使用Graphics2D),请忘记它。屏幕上只有20-30个多边形顶点时,它会慢得像爬行一样。如果

java - 改变 GridLayout 的宽度

我将GridLayout用于我的JPanel并且想知道是否可以更改列的宽度:GridLayoutgrid=newGridLayout(5,2);panel.setLayout(grid);有没有简单的方法? 最佳答案 检查GridLayoutapi以查看网格是否已创建,因此所有单元格的大小都相同。如果您希望组件以其首选大小显示,例如(15,15),请将其添加到JPanel并将JPanel添加到GridLayout。JPanel将展开以填充网格单元格并允许组件以其首选大小显示。对于不同大小的行,您必须尝试其他方法。嵌套布局将是一个很好