我想添加JTable到JPanel其布局中null. JPanel包含其他组件.我必须添加JTable适当的位置.
没有空白区域的GUI显得"拥挤".如何在不借助明确设置组件的位置或大小的情况下提供空白区域?
从Java 1.7升级到Java 1.8后,我遇到了摆动边框的一些问题:
在我的所有按钮上,我需要一个坚实的背景颜色和一个实心边框,所以我通过UIManager定义了它.在Java 1.7和以前的版本中,一切看起来都不错,但在Java 1.8上,边框都搞砸了.此外,RadioButton看起来非常奇怪和锯齿状.CheckBoxes似乎也有问题.
为了演示,我创建了一个包含几个组件的简短示例:
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.UIManager;
public class CompDemo extends JFrame
{
public CompDemo()
{
setLayout(new FlowLayout());
add(new JButton("button"));
add(new JTextField("txt"));
add(new JComboBox<String>());
add(new JRadioButton("radio"));
add(new JToggleButton("toggle"));
add(new JCheckBox("check"));
pack();
setVisible(true);
}
public static void main(String[] args)
{
UIManager.put("Button.background", Color.LIGHT_GRAY);
UIManager.put("Button.border", BorderFactory.createCompoundBorder(BorderFactory
.createLineBorder(Color.RED), BorderFactory.createLineBorder(Color.CYAN)));
new CompDemo();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到具有不同JDK版本的输出(扩展到200%而没有抗锯齿):第一个是Java 7u60并显示一切正确.在第二张图片上,我圈出了差异.第三个是使用Java 8u11,你可以看到边框非常混乱(下拉箭头看起来也很奇怪).
我在红色LineBorder中使用了青色LineBorder,因此您可以更清楚地看到问题.
我的操作系统是Windows 8 x64,如果重要的话.
任何人都可以告诉我为什么在Java 8上看起来如此不同?我错过了什么,或者他们是否真的搞乱了Java …
我通过从教科书中复制示例来学习Java,一旦我使用GUI类,我就遇到了一些奇怪的故障,如果这是正确的术语.正如您在图像上看到的那样,部分文本丢失了.
生成此对话框的代码也不复杂:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;
public class InnerClassTest {
public static void main(String[] args) {
TalkingClock clock = new TalkingClock(1000, true);
clock.start();
// keep program running until user selects "OK"
JOptionPane.showMessageDialog(null, "Quit program?");
System.exit(0);
}
}
class TalkingClock {
/*
* COnstructs a talking clock
* @param interval the interval between messages (in milliseconds)
* @param beep true if the clock should beep
*/
public TalkingClock(int interval, boolean beep) {
this.interval = …Run Code Online (Sandbox Code Playgroud) 我有一个使用Java 1.3的遗留Java应用程序
它在Windows Xp上工作正常,但现在我需要让它在Windows 7上运行.
我已经安装了1.3 jdk,但是当它第一次加载时,应用程序将无法正常呈现.屏幕的位只显示灰色背景,选择按钮不会加载新屏幕等.
我确实知道从应用程序看输出它纯粹是图形无法正确渲染.
但是,如果我按"Ctrl-alt-delete"然后按"取消"软件运行完美.如果我插入了第二台显示器,它会完美运行.
有没有人有任何建议如何使应用程序第一次完美运行.
谢谢
我在java 5中的swing应用程序有一个像

迁移到java 8后,放大并仅显示其中的一部分

我看到了这个,并尝试将J2D_D3D设置为环境变量,并尝试将其作为vm参数传递.但没有解决问题.知道这可能是什么?
我最近和我的挥杆问题有关.一切正常,直到我从JButton触发工具提示.之后将鼠标移动到ui的其余部分会导致奇怪的伪像和故障.
我无法显示整个代码,因为它太多但在这里我初始化按钮:
GridBagConstraints bottompane_gbc = new GridBagConstraints();
toggleTorConnectionButton = new JButton();
toggleTorConnectionButton.setToolTipText("Toggles Tor Connection.");
toggleTorConnectionButton.setIcon(new ImageIcon(ResourceHandler.Menueicon3_1));
toggleTorConnectionButton.setMinimumSize(new Dimension(removeFinishedDownloads.getMinimumSize().width, toggleTorConnectionButton.getIcon().getIconHeight()+5));
toggleTorConnectionButton.addActionListener(); // unimportant
bottompane_gbc.gridy = 1;
bottompane_gbc.fill = GridBagConstraints.BOTH;
bottompane_gbc.insets = new Insets(0,15,10,5);
bottompane.add(ToggleTorConnectionButton,bottompane_gbc);
this.add(bottompane,BorderLayout.PAGE_END);
Run Code Online (Sandbox Code Playgroud)
如果有人需要更多的信息来帮助我请随意问.我有点绝望.XD
编辑:经过一些修补我猜测问题与swing和我的使用有关.目前我使用很多Eventlisteners(这是不是很糟糕?),这可能会减慢awt线程?以下是HPROF的简要摘录:http: //www.pastebucket.com/96444
编辑2:我能够在一个方便而简单的例子中重新创建错误.当你移动按钮时,等待工具提示,然后在ui上.你会看到鬼影:(.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
public class Main_frame {
public static void main(String[] args) {
new Main_frame();
}
public Main_frame() {
JFrame frame = new JFrame("LOL"); …Run Code Online (Sandbox Code Playgroud)