我有一个JScrollPane包含BoxLayout(PAGE AXIS)的面板.
我的问题是JScrollPane不响应鼠标滚轮事件.要使用鼠标滚轮滚动我需要在JScrollBar.
我发现这个线索,我没有MouseMotionListener或MouseWheelListener只有一个MouseListener.我认为我的问题来自于我的JScrollPane行为JPanel包含其他面板本身.因此,当鼠标位于其中的面板上时JScrollPane,似乎该面板消耗了该事件,我从未见过滚动窗格.
是否有正确的方法可以使滚动窗格的子项捕获的事件对此滚动窗格可见?
SSCCE:

这是一个简单的测试用例,试图显示我在Swing应用程序中尝试的时间.
框架:
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
for (int i = 0; i < 50; i++) {
jPanel1.add(new TestPanel());
}
}
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jPanel1 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.PAGE_AXIS));
jScrollPane1.setViewportView(jPanel1);
getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
pack();
}
public static void main(String args[]) …Run Code Online (Sandbox Code Playgroud) 我想创建一个带有两种纯色(水平)的矩形形状来实现这样的效果:

我听说过layer-list,虽然我可以使用它来包含两个不同颜色的矩形,但它似乎只是垂直放置形状.
有没有办法用lalyer-list实现这个目标,还是应该使用完全不同的东西?我想保持简单,能够在运行时更改形状颜色.
谢谢.
问题出在标题中.
我目前正在做类似的事情:
jSperator = new JSeparator();
jSeparator1.setForeground(new java.awt.Color(255, 51, 51));
Run Code Online (Sandbox Code Playgroud)
但分隔符保持默认颜色,如212,212,212.
我需要为我的应用程序使用嵌套片段,所以我想使用getChildFragmentManager.
我有两个设备:
它在第二个上运行得很好,但在我的物理设备上却没有,因为对此方法的调用会引发NoSuchMethod异常.
07-10 19:53:51.722: E/AndroidRuntime(29711): java.lang.NoSuchMethodError: fr.epitech.test_esi.fragments.ReservationCalendarFragment.getChildFragmentManager
Run Code Online (Sandbox Code Playgroud)
我的项目使用引用的库,所以我下载了最新的android支持库(来自SDK管理器),我已将它添加到库和主项目中.

此外,我决定将支持的最小sdk版本设置为4.0.3(我的真实设备运行的版本):
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
Run Code Online (Sandbox Code Playgroud)
对于主项目和图书馆.
如果有人知道我能做错什么,请告诉我.
android android-fragments android-support-library android-nested-fragment
可能的重复:
在组件边界之外绘制
我想使用 Swing(和 SwingX)制作“好看”的界面,但我仍在努力创建漂亮的阴影。我发现在 SwingX DropShadowBorder 中已经有一个边框做我想要的(部分)。
我也发现了这一点,阴影非常好,但它适用于图像。但我相信你可以让它与JComponent. 我已经修改了代码以生成一个BufferedImage具有组件大小的空(它仅适用于矩形组件,但我并不在乎)并从此图像创建阴影。
阴影生成有效,但我的问题是我只能在摆动组件的边界内渲染阴影,但我必须在两个轴上渲染具有偏移量的阴影。
我可以避免这种情况并在组件边界之外渲染吗?例如,我可以在大小为 (50, 50) 的组件的 paintComponent 方法中在 (0, 100) 处绘制任何内容吗?
谢谢。
编辑:这是我想避免的一个例子。阴影超过了两个轴的组件的大小(组件没有渲染让你看到阴影)。

EDIT2:我不确定我是否足够清楚(如果是这样,我很抱歉)所以这里是我想要做的事情的图形表示。

我想自定义外观,JPopupMenu所以我在i上创建了一个自定义类,扩展了JPopupMenu类,覆盖了paintComponent方法,就像我需要自定义的任何组件一样.
public class CustomPopupMenu extends JPopupMenu {
@Override
public paintComponent(Graphics g) {
//custom draw
}
}
Run Code Online (Sandbox Code Playgroud)
我知道的唯一问题是我无法JPopupMenu透明化.我setOpaque(false)觉得够了,我错了.
我怎样才能JPopupMenu透明?
我想知道是否有办法知道什么时候JScrollBar(在我的情况下是垂直的)到达了他的包含的底部JScrollPane.
起初我虽然AdjustmentListener在滚动条上使用了一个但我不知道如何解释该value属性JScrollBar.此外,我不确定正确理解maximum代表什么,如果我可以使用该值来获取我需要的信息.
编辑:
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent ae) {
System.out.println("Value: " + scrollPane.getVerticalScrollBar().getValue() + " Max: " + scrollPane.getVerticalScrollBar().getMaximum());
}
}
Run Code Online (Sandbox Code Playgroud) 我有N个值(整数).我想知道在百分比中随机选择其中一个值的最优雅方式是什么.例如,对于3值示例:
我需要这个用于我用Java开发的程序,但是伪代码算法或任何其他语言的代码都可以.
目前,当您尝试手动调整TopComponent的大小时,它将显示一条黑线,显示TopComponent的未来大小.

我想知道JComponent这条黑线的背后是什么?我怎样才能访问它?
编辑
我的问题的第一部分得到了回答.附图中显示的组件是a JSplitPane.
现在,我希望能够访问它(即获取JSplitPane用于TopComponent在netbeans平台中调整大小的实例).
我需要Query使用 EJB 通过网络发送一个包含 Lucene 元素的类,当然这个类需要被序列化。我将我的班级标记为,Serializable但似乎还不够:
org.apache.lucene.search.TermQuery is not Serializable
Run Code Online (Sandbox Code Playgroud)
事实上,当我阅读 Lucene (4.0) 的最后一个稳定版本的 javadoc 时,我可以看到TermQuery它没有实现 Serializable,Query也没有。我不明白的是为什么这些类曾经Serializable在上一个版本(3.6.1)中实现,为什么不再如此?
我是OCaml的新手,我正在努力理解它的概念mutable record field.
我想创建一个记录数组,该记录包含一个布尔可变字段.所以我做了类似的事情:
type t = {i: int; mutable b: bool};;
Run Code Online (Sandbox Code Playgroud)
我希望能够更改记录的'b'字段的值,所以我把它 mutable
let m = Array.make 10 ({i = 5; b = false});;
Run Code Online (Sandbox Code Playgroud)
在这里,我尝试设置位于我的数组的第一个索引处的记录的b字段:
(Array.get m 0).b <- true;;
Run Code Online (Sandbox Code Playgroud)
问题是我想要它,它将设置数组的所有记录的'b'字段,这不是我想要的.
同一记录的可变字段是否共享相同的内存位置?如何更改特定记录的"b"字段的值?
java ×7
swing ×6
android ×2
jscrollpane ×2
algorithm ×1
android-xml ×1
border ×1
colors ×1
events ×1
graphics ×1
jpopup ×1
jpopupmenu ×1
jscrollbar ×1
jseparator ×1
jsplitpane ×1
lucene ×1
mouseevent ×1
mutable ×1
netbeans ×1
ocaml ×1
percentage ×1
random ×1
records ×1
shape ×1
swingx ×1
transparent ×1