Tag: jpanel

如何在不破坏默认实现的情况下为JPanel实现MouseWheelListener?

只是; 我在JScrollPane有一个JPanel ; 正如所料; 默认情况下, JScrollPane侦听MouseWheelEvent以便滚轮在轮子旋转时以及光标hover在JPanel 。 但在那之后; 我刚刚更新了JPanel以便它实现MouseWheelListener ,我为JPanel本身添加了这个鼠标滚轮监听器。 @Override public void mouseWheelMoved(MouseWheelEvent e) { if (e.isControlDown()) { if (e.getWheelRotation() < 0) { System.out.println("mouse wheel Up"); } else { System.out.println("mouse wheel Down"); } } } JPanel响应这个实现的时间; 当光标hover在JPanel时,按下Ctrl键并且滚轮正在旋转。 但JScrollPane的默认行为意外丢失! 当我在光标hover在JPanel时旋转滚轮时, JScrollPane的滚动没有响应! 看起来; MouseWheelListener这个实现破坏了JPanel的默认值。 所以; 如何在不破坏默认实现的情况下为JPanel实现MouseWheelListener ?

Java将JLabel与JPanel的中心对齐

我的应用程序顶部有一个栏,在JLabel的两侧都有许多按钮。 按钮的可见性取决于用户正在执行的当前任务,并且按钮的文本之一也可能根据当前状态而改变。 我想要做的是在JPanel的左边有一些按钮,JLabel的中心位于JPanel的正中央,其余的按钮位于JPanel的右侧。 到目前为止,我已经设法使用各种方法和布局管理器将按钮固定在左侧和右侧,但我无法让JLabel的中心位于JPanel的死点。 我设法获得的最好的标签是靠近中心的标签,但随着按钮设置为可见或文本发生变化,它会移动。 是否有可能迫使JLabel保持死亡中心? 注意:按钮永远不会变得足够大,无法满足JLabel的任何边缘,因此这不是问题。

如何使用流布局删除JPanel之间的填充?

这是我的Java应用程序GUI的一部分,我有一个问题。 这个GUI包含的是一个蓝色的JPanel(容器),默认的FlowLayout作为LayoutManager,它包含一个Box,它包含两个JPanels(用于删除水平间距,或者我可以使用setHgaps为零而不是Box),每个包含一个JLabel的。 这是我创建GUI部分的代码。 private void setupSouth() { final JPanel southPanel = new JPanel(); southPanel.setBackground(Color.BLUE); final JPanel innerPanel1 = new JPanel(); innerPanel1.setBackground(Color.ORANGE); innerPanel1.setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT)); innerPanel1.add(new JLabel(“Good”)); final JPanel innerPanel2 = new JPanel(); innerPanel2.setBackground(Color.RED); innerPanel2.setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT)); innerPanel2.add(new JLabel(“Luck!”)); final Box southBox = new Box(BoxLayout.LINE_AXIS); southBox.add(innerPanel1); southBox.add(innerPanel2); myFrame.add(southPanel, BorderLayout.SOUTH); } 我的问题是如何摆脱外部JPanel(蓝色)和Box之间的垂直填充? 我知道这是填充因为我读到了边距和填充之间的差异? “padding =元素从文本到边框周围(内部)的空间。” 这不起作用,因为这必须与组件之间的间隙(空间) 有关.-如何在MigLayout中删除JPanel填充? […]

将透明JPanel放在另一个不工作的JPanel之上

我试图将JPanel放在另一个包含JTextArea和按钮的JPanel之上,我希望上层apnel是透明的。 我通过制作上面板的setOpaque(false)来尝试它。 但它不起作用。 任何人都可以帮我解决这个问题吗? 提前致谢! public class JpanelTest extends JPanel { public JpanelTest() { super(); onInit(); } private void onInit() { setLayout(new BorderLayout()); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(new JTextArea(100,100),BorderLayout.CENTER); panel.add(new JButton(“submit”),BorderLayout.SOUTH); JPanel glass = new JPanel(); glass.setOpaque(false); add(panel,BorderLayout.CENTER); add(glass,BorderLayout.CENTER); setVisible(true); } public static void main(String args[]) { new JpanelTest(); } }

Java获取JPanel组件

我有一个充满JTextFields的JPanel …… for (int i=0; i<maxPoints; i++) { JTextField textField = new JTextField(); points.add(textField); } 我以后如何在该JPanel中获取JTextField? 就像我想要他们的价值观一样 TextField.getText(); 谢谢

Java swing – 在JPanel上动态显示多个图像

我搜索了许多地方在JPanel上动态添加和显示图像但无法得到适当的帮助。 基本上我有JPanel,我必须垂直显示许多图像,但它应该是动态的。 for(int i=0;i<macthedImages.length;i++) { JLabel jLabel = new JLabel(new ImageIcon(macthedImages[i])); searchResultPanel.add(jLabel); } macthedImages是一个bufferedImages数组,searchResultPanel是JPanel

使用JPanel在GUI中相互覆盖图层

我在制作简单计算器的布局时遇到了麻烦。 发生的事情是,除了我的减法按钮保留为背景之外,一切看起来都很好,我必须猜测我的其他按钮能够点击它们的位置。 当我点击它们时,我能够看到它们,直到我取消它们。 有没有什么办法解决这一问题? 我不会发布数学算法,因为这个问题不需要。 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class GUIcalc extends JFrame implements ActionListener { private JPanel panel; private JPanel buttonpanel; private JPanel text; private JLabel sumfield; private BorderLayout layout; private GridLayout grid; private Container container; private boolean toggle=true; private float sum; private int num1; private int num2; JButton one = […]

JPanel没有在JFrame中显示 – Java

Server是我制作的扩展JFrame的类。 Server serverApp = new Server(TITLE, WIDTH, HEIGHT, true, false); 我已经有效地删除了几乎所有其他代码,但问题仍然存在! c = getContentPane(); c.setLayout(new BorderLayout()); //Components /***AHHHHH***/ lblEnterMessage = new JLabel(“Enter Message “); txtEnterMessage = new JTextField(50); txtEnterMessage.addActionListener(this); btnSend = new JButton(“Send”); btnSend.addActionListener(this); taDisplay = new JTextArea(“Test, test test.”, 10, 0); taDisplay.setEditable(false); JScrollPane jspDisplay = new JScrollPane(taDisplay); pnlChatTop = new JPanel(new FlowLayout()); pnlChatTop.add(lblEnterMessage); pnlChatTop.add(txtEnterMessage); […]

如何重置JTable

我有一个关于JScrollPane和JTable 。 我已将JTable添加到JScrollPane ,并将JScrollPane添加到JPanel 。 当我点击“show”按钮时, JTable将填充数据库中的内容。 我还有另一个按钮reset ,点击它将删除JTable的内容和JScrollPane 。 它应该是这样做的,但是发生的是,即使在单击按钮之后, JTable和JScrollPane所有内容仍然存在。 我使用了revalidate() , reinstantiate()等,但没有用。 我如何使其工作?

MouseEvent在JScrollPane中丢失了

这是我用来显示我在另一个项目中遇到的问题的代码。 如果我使用JScrollPane作为panel2的包装器,我没有得到任何这样的行。 为什么? 我想点击JscrollPane并打印事件如下。 java.awt.event.MouseEvent[MOUSE_CLICKED,(800,469),absolute(808,499),button=1,modifiers=Button1,clickCount=1] on javax.swing.JPanel[,0,0,934×612,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.LineBorder@cc0e01,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=880,height=630]] 如果现在我改变了 panel1.add(pane); 至 panel1.add(panel2); 然后打印上面的消息。 public class LostMouseEvent { public static void main(String[] args) { new LostMouseEvent(); } public LostMouseEvent() { EventQueue.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BorderLayout()); JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); JScrollPane […]