相关疑难解决方法(0)

如何根据组合框选择更改UI

在对话框中,如果选中某个组合,则需要显示一组控件,否则显示另一组控件.即我需要2层,我需要在选中/取消选中组合时在它们之间切换.我怎样才能做到这一点?

谢谢

java user-interface swing cardlayout

6
推荐指数
1
解决办法
7425
查看次数

将文本垂直居中于Java JLabel中的HTML表格单元格中

我有一个显示在JLabel中的HTML表格(带有CSS的样式).我希望单元格的内容(单个短文本行)水平和垂直居中.水平居中很容易,但我似乎无法垂直居中.我试着vertical-align:valign:middlecenter参数.我已经看了几个技巧,但是没有一个看起来可行,而我试过的那些没有用.

我现在拥有的:

内联(在<style>标签中)CSS:

table.outer {
    background:#F0F0F0;
    border-collapse:collapse;
    border:none;
}

td.outer {
    border-style:solid;
    border-width:1pt;
    border-color:#888888;
    padding:0pt 0pt 0pt 0pt;
}

table.inner {
    border-collapse:collapse;
    border:none;
}

td.title {
    width:75pt;
    background:#BFBFBF;
    padding:1.5pt 0pt 1.5pt 0pt;
}
Run Code Online (Sandbox Code Playgroud)

HTML的相关部分:

<body bgcolor=#F0F0F0>
<table class='outer'>
  <tr>
    <td class='outer' valign=top>
    <table class='inner'>
      <tr>
        <td class='title' rowspan=3>
          <p class='title'>Current Run</p>
        </td>
      </tr>
    </table>
    </td>
  </tr>
</table>
</body>
Run Code Online (Sandbox Code Playgroud)

html java swing jlabel vertical-alignment

6
推荐指数
1
解决办法
2705
查看次数

使2个JButton大小相等

我有两个JButton文本"Ok"和"Cancel".我用它GridBagLayout来对齐它们JDialog.我把锚设置为GridBagConstraints.CENTER.由于文本"Ok"和"Cancel"中字符数的不同,按钮的大小不同.如何正确对齐它们,使它们每个都具有相同的大小.我试过以下但没有用.

okayButton.setSize(cancelButton.getSize());
Run Code Online (Sandbox Code Playgroud)

java swing jbutton layout-manager gridbaglayout

6
推荐指数
1
解决办法
3293
查看次数

如何更改JFreeChart的大小

我添加了JFreeChart一个JPanel(使用a BorderLayout),它是巨大的.有什么我可以做的让它变小吗?

public void generateChart()
{
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();

    //set the values of the chart
    for(int i=0; i<8; i++)
    {
        dataset.setValue(income_array[i], "Income",
            Double.toString(percent_array[i]));
    }

    JFreeChart chart = ChartFactory.createBarChart(
        "Required Annual Income for a Variety of Interest Rates",
        "Percent", "Income", dataset, PlotOrientation.VERTICAL,
        false,true, false);
    ChartPanel cp = new ChartPanel(chart);

    chart.setBackgroundPaint(Color.white);
    chart.getTitle().setPaint(Color.black); 
    CategoryPlot p = chart.getCategoryPlot(); 
    p.setRangeGridlinePaint(Color.blue); 

    //cp.setMaximumDrawHeight(5);
    //cp.setMaximumDrawWidth(5);
    //cp.setZoomOutFactor(.1);
    JPanel graph = new JPanel();
    graph.add(cp);
    middle.add(graph, BorderLayout.CENTER);
}   
Run Code Online (Sandbox Code Playgroud)

java layout swing jfreechart sizing

6
推荐指数
1
解决办法
1万
查看次数

获取挥杆组件的位置

我把一些JPanel放到另一个JPanel中,它的布局是Box Layout和Y-Axis.在我放置所有面板后,我需要从JPanel容器面板中获取每个添加的JPanel的Y位置.但是,当我试图得到它时,每个JPanel的Y位置总是为零.请告诉我如何从JPanel容器JPanel获取每个Jpanel的Y位置.

这就是我所做的,

JPanel panelHolder = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS));
for(int i = 0; i< 10; i++){
   JPanel p = new JPanel(); 
   panelHolder.add(p);
}

int componentCount = panelHolder.getComponentCount();

for (int j = 0; i < componentCount ; j++) {

  Component c = pnlRowHolder.getComponent(i);
  JPanel p = (JPanel)c;
  System.out.println(p.getY());//I get zero for all
}
Run Code Online (Sandbox Code Playgroud)

java swing jpanel layout-manager

6
推荐指数
1
解决办法
2万
查看次数

如何设置JTextArea大小?

我想设置一个固定大小的JtextAreaJOptionPane

public static void main(String[] args) {

        JTextArea headersTxt = new JTextArea();
        for (int i = 0 ; i < 50 ; i ++ ) {
            headersTxt.append("test \n") ;
        }
        JScrollPane scroll = new JScrollPane(headersTxt); 
        scroll.setSize (300,600) ;  // this line silently ignored
        int test = JOptionPane.showConfirmDialog(null,  scroll,"test",  JOptionPane.OK_CANCEL_OPTION) ;

    }
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码忽略了 scroll.setSize (300,600) ;

它工作正常,但大小不固定.有什么问题scroll.setSize (300,600) ;

java swing joptionpane jtextarea

6
推荐指数
1
解决办法
2万
查看次数

神秘(并发/组件绘图?)非常简单的Swing骰子程序中的错误

对于这个糟糕的问题标题感到抱歉,我对这个错误的原因感到困惑,并且不知道该怎么说这个问题.

我正在学习基本的Swing,并从在线书籍Java编程入门中学习这个练习.

我没有按照信中的说明进行操作,而是尝试这样做:

  • 有一个窗口,显示两个骰子的视觉表示
  • 当你点击其中一个骰子时,它'滚动'并显示新值

我的实施:

  • 一个非常基本的JDie对象,它扩展了JPanel
  • 重写paintComponent绘制模具表示的方法
  • 每次改变模具颜色只是为了一个视觉线索
  • 添加了一个监听器,在按下鼠标时"滚动"骰子,然后
    重新绘制

这个bug非常具体:

  1. 运行DieTest主方法
  2. 调整窗口大小以适合两个骰子
  3. 点击第二个模具进行滚动
  4. 现在点击第一个模具进行滚动
  5. 第二个骰子的值会变回其原始值
  6. 如果你调整窗口大小,第二个骰子的值也会改变

如果我点击骰子滚动它们,我调整窗口大小之前,错误将不会出现......

我想我在某个地方犯了一个基本的错误,这个错误只是伪装成这种奇怪的行为.

我试图尽可能地减少代码,只需要花费很长时间就可以解决bug出现时的问题,以及什么时候没有:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class JDie extends JPanel {

    private Color color;
    private int value;

    JDie(){

        value = getValue();
        color = Color.BLACK;

        //add listener
        addMouseListener(new MouseAdapter(){
            @Override
            public void mousePressed(MouseEvent arg0) {
                value = getValue(); //'roll' the die
                repaint();
            }
        });
    }

    /*private helper methods */
    private int getValue(){
        int …
Run Code Online (Sandbox Code Playgroud)

java concurrency swing drawing

6
推荐指数
1
解决办法
350
查看次数

JavaFX WebView扩展到整个区域

我正在尝试创建一个扩展到周围JPanel的javafx WebView.根据这一线索:http://www.coderanch.com/t/634791/JavaFX/java/Resizing-HTMLEditor-JavaFX,有在需要调用web视图中的错误GridPane.setHgrow,并GridPane.setVgrow在网页视图.我用这些调用填充了我的代码,但WebView仍然是600x800px.jxframe悲伤

请注意,场景具有蓝色背景,因此您可以看到javafx内容确实填充了整个JPanel.但是WebView没有填充javafx组/场景.

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;


public class Main {

    private void initAndShowGUI() {
        // This method is invoked on the EDT thread
        JFrame frame = new JFrame("Swing and JavaFX");
        frame.setSize(1000, 1000);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        JPanel panel = new JPanel(new BorderLayout(0, 0));
        frame.getContentPane().add(panel, BorderLayout.CENTER);

        JButton button = new JButton("button");
        panel.add(button, …
Run Code Online (Sandbox Code Playgroud)

java swing javafx

6
推荐指数
1
解决办法
3562
查看次数

在Java中调整大小时,绘制的内容不可见

请注意我还没有在Mac机器上的Windows机器上测试过这个.我不太确定这是否也出现在Windows机器上......

当我调整Java应用程序的大小时,内容是不可见的.我已经找到一种方法来解决它调整其大小,但不能同时在用户调整窗口的大小.

我没有使用Swing或其他东西,因为它使我的二进制文件变得如此缓慢(在我看来).

结构是这样的:

  • Frame 我的主窗口
    • Container内容视图main-window
      • Container基于paint(Graphics g)-method 的子视图

我已经添加了所有监听器My main-window,现在我可以调整窗口大小重绘Content-view .

public void componentResized(ComponentEvent e) {
    this.contentView.paint(this.contentView.getGraphics());
}
Run Code Online (Sandbox Code Playgroud)

我谨慎使用paint(getGraphics())-method并不是一个非常好的方法,但是因为repaint()-method根本没有做任何事情,所以它是唯一可行的方法.

调整大小时,所有绘制的内容都变得不可见.但是,当我向我添加Button-instance Content-view并调整我Main-window的大小时,该按钮不会被隐藏.

能够追踪"live'调整大小事件:

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
}
Run Code Online (Sandbox Code Playgroud)
  1. 当我开始调整大小时,不会调用此方法.
  2. 调整大小时,在我的日志中生成"实时调整大小"每个像素我调整窗口大小.
  3. 当我停止调整大小时,没有调用此方法,componentResized-method会这样做.

当我将repaint-method(或官方重绘方法)添加到像这样的'live'-resize事件时,我仍然得到输出,但是,它没有重新绘制或者某些东西

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
    this.contentView.paint(this.contentView.getGraphics());
}
Run Code Online (Sandbox Code Playgroud)

要么

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
    this.contentView.repaint();
} …
Run Code Online (Sandbox Code Playgroud)

java graphics resize window minimize

5
推荐指数
3
解决办法
4861
查看次数

Java swing布局

我很难确定要使用的布局.帮助任何建议.

在此输入图像描述

JPanel mainpanel = new JPanel();

public void addPanel(JPanel panel){
    mainpanel.add(panel);
}

addPanel(A);
addPanel(B);
addPanel(C);
addPanel(D);
addPanel(E);
....
Run Code Online (Sandbox Code Playgroud)

面板A,B,C,D ......的尺寸不固定.

我怎样才能做到这一点?

java layout swing layout-manager

5
推荐指数
2
解决办法
2452
查看次数