Tag: swing

运行swing应用程序而不创建DSN

如何在不在客户端上创建DSN的情况下运行swing应用程序 我正在开发一个swing应用程序,我必须将mdb数据库提供给具有密码保护的客户端,我不希望需要在客户端创建DSN 是否有任何可能的方法在编码部分中提供数据库路径,而不是指定DSN名称。 因为DSN创建对于客户来说是一项复杂的任务。

Java / AWT / Swing:关于validation和大小

我对如何在Java中管理组件的布局感到困惑(我想手动完成它而不是由布局管理器处理它)。 Component有以下方法: layout , doLayout validate , invalidate , revalidate validateTree , invalidateTree setSize , setBounds , setPreferredSize getSize , getBounds , getPreferredSize paint , repaint , update updateUI 早些时候,我试图重载上面的各种组合,但我不太确定哪一个重载,我必须在内部做什么以及我必须在子组件上调用哪些函数。 我现在在做的是: 只有超载doLayout以上。 在doLayout ,对于所有子组件: 打电话给child.doLayout 。 调用child.setBounds (有时在child.setBounds之前,有时在after之后,有时两者都有)。 在doLayout ,因为我正在进行布局,所以我自动计算了它的首选大小。 在doLayout ,调用this.setPreferredSize 。 在所有构造函数中,调用: this.setLayout(null) 。 在一些构造函数中,调用: this.doLayout 。 (如果我不这样做,它就无法正确显示。) 当我做一些必须重做布局的操作时(例如,我动态地在某个容器中添加了一些文本字段,因此我想调整容器以及相应的所有父项),我调用container.revalidate() 。 剩下的问题: 我想我还没有真正理解什么函数调用什么,我有什么重载和如何处理。 在doLayout […]

删除JComboBox中的向下箭头

我想创建一个自动完成程序,我正在使用JComboBox 。 现在我想删除JComboBox中的向下箭头。 如何删除箭头?

如何在鼠标右键单击时禁用JSlider的位置更改

我在我的应用程序中使用JSlider 。 我只想左键单击滑动JSlider ,我想禁用JSlider右键单击。 我能够在右键单击时获得事件,但是滑块正在将其值更改为其他位置。 jSlider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { //code } }); jSlider.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { if (e.getButton() == java.awt.event.MouseEvent.BUTTON3) { //code } else { //code } } });

JTable单元格返回null

我在JTable单元格中使用JTextField ; 我使用TabelModel ,它具有JTable的动态数据。 现在,当我点击一个按钮时,我正在读取一个单元格值。 问题是具有当前焦点的单元格不返回更新的值。 例如,考虑这个程序: import java.awt.BorderLayout; import java.awt.Component; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; public class MyTable extends JFrame { DefaultTableModel tmodel = new DefaultTableModel(new Object[][]{ {“some”}, {“any”}, {“even”}, {“text”}, {“and”}, {“”}}, new Object[]{“Column 1”}); public […]

getComponentAt()没有找到组件?

我正在使用JFrame来设置一个纸牌游戏,使用扩展JLabel卡片,以便它们可以在屏幕上拖动。 但是,我的要求之一就是我可以双击一张卡片,它可以快速连接到4个A盘。 这不是问题。 造成问题的原因是我把它设置在一个数组中,这样aces会到达与ace的套装相对应的位置,然后如果卡被拖到那里我会重新排列。 如果双击,则A必须转到第一个点(从左侧)到第二个点,依此类推。 我曾计划使用getComponentAt()找出第一个位置的内容,如果我可以将ace放在那里,如果没有,那么我继续前进到第二个,依此类推。 但是出于某种原因,即使我将参数硬编码到getComponentAt()中我知道有一个组件,它仍然返回null。 这是我的代码的相关部分: Container contentPane = getContentPane(); contentPane.setLayout(null); … for(int i = 0; i < 4; i++) { aces[i] = new Card(); aces[i].setBounds((i * 75) + 475, 25, 75, 100); contentPane.add(aces[i]); aces[i].setBorder(BorderFactory.createLineBorder(Color.BLACK, 3)); aces[i].setSuit(i + 1); } System.out.println(contentPane.getComponentAt(475, 25)); 每次都返回null ,无论我在组件的哪个位置放置坐标。 有什么解释吗? *更新的SSCCE:这是主要类,单人纸牌: import java.util.*; import javax.swing.*; import java.awt.*; public […]

如何打印出JTable的特定行/列?

我能够打印完整的JTable,但实际上我想要更多地打印JTable的特定部分,例如从第10行到第50行以及第70列到第150列。怎么做?

当组件在paintComponent()之外加载图像时,JFrame显示为空白; 方法

现在这可能听起来很奇怪,这也是我认为这是Java本身的一个错误的原因。 我目前正在为我的应用程序制作自定义组件。 这些组件( JComponent )覆盖paintComponent(); 方法。 出于某种原因,当我在组件中实现图像时,当使用任何这些组件时,框架显示为空白,我做了一些调试,我发现了以下内容:一旦这个覆盖方法中的代码绘制了一个存储的图像在方法本身之外的变量中,就像非静态类变量一样,框架在显示时将显示为空白,直到resize为止。 当使用存储在paintComponent();中的变量中的图像时,一切正常paintComponent(); 方法本身。 这里发生了什么,我怎么能解决这个问题? 我真的需要使用存储在类变量中的图像来缓存这些图像,否则一次又一次地加载每个图像将是非常高性能的。 类似于下面的代码的代码工作正常; public class MyComponent extends JComponent { @Override public void paintComponenet(Graphics g) { Image img = ImageIO.read(getClass().getResource(“/res/myImg.png”)); g.drawImage(img, 0, 0, null); } } 当使用这样的东西时,框架显示为空白; public class MyComponent extends JComponent { private Image img = ImageIO.read(getClass().getResource(“/res/myImg.png”)); @Override public void paintComponenet(Graphics g) { g.drawImage(img, 0, 0, […]

图像滑块

我想在Java Swing中创建类似http://flowplayer.org/tools/demos/scrollable/index.html的内容 。 我不需要所有这些效果,只需滚动缩略图。 很好的方法是使用工具栏和ImageIcons,然后点击一些JPanel上的加载图像。 这有什么常见的做法吗?

Jlist限制最大数量选定元素

我有一个包含任意数量元素的jlist。 我想限制用户只从列表中选择3个元素。 到目前为止,除了从那里制作列表选择监听器和编码之外,我还没有找到任何非常方便的方法。 在Swing中有任何内置方式或最佳实践吗?