Tag: awt

用于绘制棋盘的Java swing / awt组件

我对swing / awt没有多少体验。 我的问题是:我需要绘制像棋盘(NxN)这样的东西。 一般来说,我需要访问每个单元格来进行更改(当程序运行时,例如我单击按钮,并且该板上的单元格会发生某些事情)。 如果一个Component允许我在单元格中设置一个Image那将会很有用。 我尝试使用GridLayout但我什么都没有让我满意。 你知道如何解决这个问题吗?

运行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 […]

java将图像添加到canvas

我正在尝试将图像添加到Javacanvas。 我正在使用“ImageIO.read”来获取图像源。 我面临的问题是,我不知道如何在阅读图像位置后在canvas上显示它。 稍后我将需要加载不同的图像(例如按下按钮后)我该怎么做。 更新(canvas.update)方法需要“Graphics”参数而不是图像。 下面你会发现我的代码已经简化了(我遗漏了与canvas问题无关的所有代码。) public class MainWindow { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { window = new MainWindow(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public MainWindow() { initialize(); } /** * Initialize the […]

如何在鼠标右键单击时禁用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的特定行/列?

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

在触摸屏上获取Click Count Mouse Listener

我正在运行一个带有JList的简单JFrame。 我遇到了一个问题就像这个人> 触摸屏上的Java getClickCount 我知道它已经发布但没有答案。 jList.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { System.out.println(“MouseClick: “+e.getClickCount()); if (e.getClickCount() == 2) {

使用Swing绘制选择框

我用面板和三个按钮编写了一个应用程序。 我想用鼠标添加选择这个按钮。 我的意思是我们在桌面上的Windows中。 我按下鼠标左键,随着鼠标的移动,区域选择也在增长。 是否有一个特定的接口或我是否有手动调用事件监听器的相应方法,并绘制透明矩形? 这是一张图片: 所以当我使用鼠标拖动绘制矩形时,我有一个问题,按钮正在重新绘制,因此用户可以看到闪烁按钮。 当我画矩形时,我想要这个按钮不要消失。 我认为我需要使用glassPane。 这是我的观念。 我有一个框架。 在框架中我添加了带按钮的面板,我需要另一个面板,我将绘制透明矩形。 我在想,然后我的按钮仍然不会重新粉刷。 你对这个概念有什么看法? 或者也许有人有另一个想法。 这是代码: @Override public void mousePressed(MouseEvent e) { startPoint=e.getPoint(); setOpaque(true); Graphics2D g2 = (Graphics2D)getGraphics(); Rectangle2D prostokat = new Rectangle2D.Double(); prostokat.setFrameFromDiagonal(e.getPoint().x, e.getPoint().y,startPoint.x, startPoint.y); g2.setComposite(AlphaComposite.getInstance(rule, alpha)); g2.draw(prostokat); g2.setColor(Color.BLUE); g2.fill(prostokat); } @Override public void mouseDragged(MouseEvent e) { setOpaque(true); Graphics2D g2 = (Graphics2D)getGraphics(); Rectangle2D prostokat […]

为什么Graphics2D.setStoke()不适用于Graphics2D.drawString?

我希望字符串具有不同的宽度,以便我设置Graphics2D的笔划,代码在这里: import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JFrame; import javax.swing.JPanel; public class StrokeTest { public static void main(String[] args) { StrokeTest test = new StrokeTest(); test.createUI(); } public void createUI(){ JFrame frame = new JFrame(); frame.add(new MainPanel()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } @SuppressWarnings(“serial”) class MainPanel extends JPanel{ public MainPanel(){ setPreferredSize(new Dimension(400, […]

我可以在一个类中使用多个ActionListener吗?

考虑下面过于简化的例子; 其中一些用伪代码编写,以简洁起见。 当我尝试按原样运行时,我收到编译器错误,指出已在我的main方法中找到actionPerformed 。 但是,如果我重命名它,对actionPerformed2说,它不再被ActionListener识别。 我是否需要将foo和foo2方法的侦听器组合到一个ActionListener方法中? 在具有多个按钮对象的单个类中使用多个侦听器时,如何正确区分侦听器? 我刚刚开始玩摆动组件,所以我怀疑我可能不会问正确的问题……但是我可以随时编辑。 🙂 public class foo { declare button1, button2, button3 and panel1 public foo() { show panel1 with button1 and button2; } public foo2() { show panel1 with button3; } public void actionPerformed(ActionEvent e) { Object source1 = e.getSource(); do some stuff when button1 is clicked } public […]